![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Открытие заблокированного файла [D4, D5, D6, Win95/98, WinME, WinXP]
Subfire © (2002-10-28 13:03:00)Эээ...пардон, не понял куда пропал мой вопрос...может его кто-то считает "не в тему" или недостойным вниманиея?!!! Ну лан...попробую повторить =)
Как при перед открытием файла определить, что он занят другим процессом?! т.е. в таком случае возникает:
AssignFile(f,"somefile");
Reset(f,1); //EXCEPTION!!!!!!!!!!!!
Без использования VCL try...except не ловит...В аттрибутах и TFileRec ничего нету...
Может можно API функцией перед открытием определить?!!!
Subfire (2002-10-28 14:54:00) [1]>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 ..... //Файл занят!
Subfire (2002-10-28 14:18:00) [2]Счаз попробуем...
Marcus (2002-10-28 14:17:00) [3]Можно попробовать открыть его CreateFile(... , FILE_SHARE_READ or FILE_SHARE_WRITE, ...) и если она вернет INVALID_HANDLE_VALUE,
проверить, что вернет GetLastError. Если она скажет что-то типа ERROR_SHARING_VIOLATION или ERROR_LOCK_VIOLATION, то файл занят