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

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

Файл занят другим приложением


Страницы:   1 2

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]

проверять бесполезно.


Страницы:   1 2

Наверх

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