![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл занят другим приложением
ciborg © (2008-06-09 14:10:00)Я хочу открыть файл. При этом он может быть занят другим приложением, при открытии выдается ошибка. Как мне проверить занят ли он и если занят, то подождать определенное время, и если за это время он не освободится, то выдать ошибку?
ciborg (2008-06-09 14:16:00) [21]почему?
Anatoly Podgoretsky (2008-06-09 14:15:00) [22]> ciborg (09.06.2008 14:10:00) [0]
> при открытии выдается ошибка
Вот это и обработать, только проверять не надо.
Игорь Шевченко (2008-06-09 14:15:00) [23]const
maxcnt = 360; //Ждем 6 минут максимум
var
fd: Integer;
ofs: _OFSTRUCT;
err: DWORD;
cnt: Integer;
begin
cnt := 0;
repeat
Inc(cnt);
FillChar(ofs, SizeOf(ofs), 0);
ofs.cBytes := SizeOf(ofs);
fd := OpenFile(PChar(FileName), ofs, OF_SHARE_EXCLUSIVE);
err := GetLastError;
if err <> ERROR_SHARING_VIOLATION then
Break;
Sleep(1000);
until cnt >= maxcnt;
CloseHandle(fd);
if err <> ERROR_SUCCESS then
raise Exception.Create(SysErrorMessage(err))
Поросенок Винни-Пух (2008-06-09 14:13:00) [24]проверять бесполезно.