Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

А можна заблокувати доступ до папки, щось типу fmShareExclusive, але для папки ??? Знайти схожі гілки


Art   (2001-12-18 15:12) [0]

А можна заблокувати доступ до папки, щось типу fmShareExclusive, але для папки ???



Алексей Петров   (2001-12-18 16:08) [1]

С помощью CreateFile можно открыть и директорию, в т.ч. и эксклюзивно.

Спробуйте ...

Подробности в MSDN



cdaDmitriy   (2001-12-18 17:20) [2]

> Алексей Петров ©
SOURCE for use CreateFile for
С помощью CreateFile можно открыть и директорию ? ...



Алексей Петров   (2001-12-18 17:23) [3]

> CdaDmitriy © (18.12.01 17: 20)
Читайте MSDN.
Source я в тривиальных случаях не привожу.



Art   (2001-12-18 17:25) [4]

Я обязательно попробую ,но от слов MSDN веет чем-то мелкософтовым,а я про Дельфи!!



cdaDmitriy   (2001-12-18 17:40) [5]

> Алексей Петров © я в тривиальных случаях не привожу ?
я пробовал ... попробуй идай пример.



cdaDmitriy   (2001-12-18 17:47) [6]

S1:="D:\ICON\"; в т.ч. и эксклюзивно
H := Integer(CreateFile(PChar(S1), GENERIC_READ, 0 , nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0));
label1.Caption: = inttostr (H);
if H < 0 then raise EFCreateError.CreateResFmt(@S, [S1]);




Art   (2001-12-18 17:53) [7]

cdaDmitriy откудова ты ето достал,я не сомневаюсь в работоспособности кода,но охота почитать по поводу директорий



cdaDmitriy   (2001-12-18 17:59) [8]

help for CreateFile and попробовал



Art   (2001-12-18 20:24) [9]

Ребят вы или дураки или читать не умеете.Был задан вопрос Заблокировать папку надо,доступ к ней. А вы про файлы мне???Я сначала не поверил,но потом я все выяснил,все написанное здесь,кроме моего вопроса - чушь!



Anatoly Podgoretsky   (2001-12-18 20:28) [10]

Да и как ты думаешь будут тебе отвечать в дальнейшем, я не хочу проверять приведенный код, но хинт следующий Папка такой же файл.



Art   (2001-12-18 21:39) [11]

Ђнатолий,значит Я - дурак!!! ? все тут!!! џ пробовал и код приведенный выше и сам писал и ничего не прошло,если указывать директорию - ничего не менЯетсЯ,а если файл , то все ЋЉ работает,файл заблокирован!!! ? как с этим быть???



Алексей Петров   (2001-12-19 08:41) [12]

Еще хинт:
В коде, приведенном "cdaDmitriy © (18.12.01 17:47)" 2 ошибки.
1. В имени директории конечный "\" - лишний.
2. Проверка открылся ли файл должна выполняться проверкой на INVALID_HANDLE_VALUE, а не <0. В текущей версии Delphi и WinAPI Integer(INVALID_HANDLE_VALUE) конечно <0, но это может поменяться, к тому-же, теоретически возможно появление корректного Handle, такого, что Integer(Handle)<0.
3. Для проверки ошибок WinAPI - удобнее писать
Win32Check(H<>INVALID_HANDLE_VALUE)

> Art © (18.12.01 17: 25)
Если MSDN смущает - смотри в SDK help, это собственно усеченная версия MSDN-а. А из Delphi все API прекрасно вызывается.



cdaDmitriy   (2001-12-19 09:31) [13]

> Алексей Петров ©

1. В имени директории конечный "\" - лишний.
он не лишний а избыточный :

lpFileName

Points to a null-terminated string that specifies the name of the object (file, pipe, mailslot, communications resource, disk device, console, or directory) to create or open.

If *lpFileName is a path, there is a default string size limit of MAX_PATH characters. This limit is related to how the CreateFile function parses paths.
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\\?\" tells the function to turn off path parsing. This lets you use paths that are nearly 32,000 Unicode characters long. You must use fully-qualified paths with this technique. This also works with UNC names. The "\\?\" is ignored as part of the path. For example, "\\?\C:\myworld\private" is seen as "C:\myworld\private", and "\\?\UNC\tom_1\hotstuff\coolapps" is seen as "\\tom_1\hotstuff\coolapps".

2. посмотри реализацию unit Classes; хотя
Win32Check(H<>INVALID_HANDLE_VALUE) надежней.


{ TFileStream }

constructor TFileStream.Create(const FileName: string; Mode: Word);
починати
if Mode = fmCreate then
починати
FHandle := FileCreate(FileName);
if FHandle < 0 then
raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]);
end else
починати
FHandle := FileOpen(FileName, Mode);
if FHandle < 0 then
raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);
end;
end;

Art © все работает если хочешь пиши пришлю



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.86 MB
Час: 0.027 c
6-22267
wHammer
2001-09-28 15:00
2002.01.08
Було-б дуже зручно ...


3-21963
szap
2001-12-05 11:53
2002.01.08
Швидкість


1-22222
Eugene Zelikovsky
2001-12-14 13:58
2002.01.08
CallBack


6-22286
ReY
2001-10-08 18:07
2002.01.08
Піпл !!! Потрібен ICQ!


6-22303
максі
2001-10-11 18:03
2002.01.08
клієнт DCOM не бачить сервер DCOM на різних машинах.





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в&#39;єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська