Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокирование файла [D7, Win2k]


Страницы:   1 2

Kniaz ©   (2004-09-23 15:38:00) 

Хочу работать с файлом обычными функциями типа AssignFile, RewRite, ReadLn, WriteLn,  но при это мне надо заблокировать этот файл от доступа из других приложений. Как это сделать????
С другими функциями работы с файлами общатся не умею.


Fay   (2004-09-23 19:15:00) [21]

2  [11] pasha_golub ©   (23.09.04 19:14)
Если сказал - значит так и есть.
8)


pasha_golub   (2004-09-23 19:14:00) [22]

Fay ©   (23.09.04 18:22) [10]

Да что Вы говорите! Какая нехорошая система! Убил бы.

А говоришь - жена юрист ;-)


Fay   (2004-09-23 18:22:00) [23]

2  [9] Defunct ©   (23.09.04 18:10)

> В системе не разрешается совместный доступ по записи в файл.

Да что Вы говорите! Какая нехорошая система! Убил бы.

var
 h1, h2 : DWORD;
begin
 h2 := INVALID_HANDLE_VALUE;
 h1 := CreateFile('c:\boot.ini', GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
 try
   if h1 = INVALID_HANDLE_VALUE then RaiseLastOSError;
   h2 := CreateFile('c:\boot.ini', GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
   if h2 = INVALID_HANDLE_VALUE then RaiseLastOSError;

 finally
   if h1 <> INVALID_HANDLE_VALUE then CloseHandle(h1);
   if h2 <> INVALID_HANDLE_VALUE then CloseHandle(h2);
 end;
end;


Defunct   (2004-09-23 18:10:00) [24]

Пока файл открыт приложением для записи (выделен системный Handle для записи), доступ по записи к нему другим приложениям заблокирован. Как только вы делаете FileClose/ CloseFile и т.п. блокировка снимается.

Квэнди ©   (23.09.04 18:00) [6]
Причем блин тут чтение? К тому же блокнот просто читает содержимое файла и сразу же его закрывает.

> Fay ©   (23.09.04 17:20) [4]
Удалите запущенный EXE файл или попробуйте в него что-то записать. В этом направлении ищите и документацию, искать документацию для того чтобы вам что-то доказать у меня нет ни времени ни желания. В системе не разрешается совместный доступ по записи в файл.


Квэнди   (2004-09-23 18:08:00) [25]

Согласен, при открытии на запись, файл действительно блокируется, приношу свои извинения.


Amoeba   (2004-09-23 18:03:00) [26]


> Квэнди ©   (23.09.04 18:00) [6]

А с чего ты взял, что после загрузки в блокнот файл остается открытым?


Квэнди   (2004-09-23 18:00:00) [27]

Как инетересно... блокирует сама.. забавно даже, т.е. кароч незя открыть несколько одинаковых файлов в блакноте?.. да? :))) во клас был бы :)


pasha_golub   (2004-09-23 17:29:00) [28]

Defunct ©   (23.09.04 15:50) [1]
Ссылочку на инфо, плиз.


Fay   (2004-09-23 17:20:00) [29]

>> Система сама заблокирует доступ на запись для других приложений.
Это где-то написано, или опыт подсказывает?


ламер   (2004-09-23 16:39:00) [30]

[offtop]
RewRite - довольно интересный вариант :)
[/offtop]


Sandman25   (2004-09-23 15:52:00) [31]

FileMode


Defunct   (2004-09-23 15:50:00) [32]

Система сама заблокирует доступ на запись для других приложений.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо