Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Открытие заблокированного файла   Найти похожие ветки 

 
Subfire ©   (2002-10-28 13:03) [0]

Эээ...пардон, не понял куда пропал мой вопрос...может его кто-то считает "не в тему" или недостойным вниманиея?!!! Ну лан...попробую повторить =)
Как при перед открытием файла определить, что он занят другим процессом?! т.е. в таком случае возникает:

AssignFile(f,"somefile");
Reset(f,1); //EXCEPTION!!!!!!!!!!!!

Без использования VCL try...except не ловит...В аттрибутах и TFileRec ничего нету...
Может можно API функцией перед открытием определить?!!!


 
Marcus   (2002-10-28 14:17) [1]

Можно попробовать открыть его CreateFile(... , FILE_SHARE_READ or FILE_SHARE_WRITE, ...) и если она вернет INVALID_HANDLE_VALUE,
проверить, что вернет GetLastError. Если она скажет что-то типа ERROR_SHARING_VIOLATION или ERROR_LOCK_VIOLATION, то файл занят


 
Subfire ©   (2002-10-28 14:18) [2]

Счаз попробуем...


 
Subfire ©   (2002-10-28 14:54) [3]

>Marcus

Точно...пасиб....просто я тормозил. Точнее поленился номрально подумать =)
Вывод 1 - СНАЧАЛА ПОДУМАТЬ, ХОРОШО ПОТОМ СПРАШИВАТЬ
Вывод 2 - Хочешь напрограммить что-нибудь мелкое и удобоваримое - программь на чистом API, и не смешивай =)))

Короче вот, так мы тупо проверим файл на доспуность к записи - как ShareViolation, так и ReadOnly атрибут!!!
myFile:=CreateFile(PChar("c:\Project1.exe"),GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);

If myFile=INVALID_HANDLE_VALUE then ..... //Файл занят!



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
3-27854
andy_ar
2002-11-21 07:49
2002.12.09
Как отобрать нужное количество записей?


1-27942
Xmen
2002-11-29 11:16
2002.12.09
Помогите справится с ListBox ом!


1-27943
Yuraz
2002-11-29 09:54
2002.12.09
Не получается вставить в поток небольшую (длительную) процедуру.


3-27832
UniDeMoN
2002-11-17 04:33
2002.12.09
создание собственной базы данных


4-28355
kostik78ua
2002-10-28 15:42
2002.12.09
Winexec