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

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

Как проверить что файл уже открыт? [D7, WinXP]


BorlandC ©   (2005-10-18 14:29:00) 

Хочу перезаписать *.doc файл из Delphi, и он нормально перезаписывается, но если этот файл открыт(например в MicrosoftWord), то приложение выдает ошибку и виснет. Как проверить что этот файл открыт(или не открыт) где-либо???


Fay   (2005-10-18 17:34:00) [1]

2 clickmaker ©   (18.10.05 16:28) [7]
А, я понял. Это, видимо, буквальный ответ.


Fay   (2005-10-18 17:33:00) [2]

2 clickmaker ©   (18.10.05 16:28) [7]
А в случае отсутствия файла?


Andy BitOff   (2005-10-18 16:28:00) [3]

Я, в свое время делал так:

function Tfrm_Main.AccessToFile(FName:string):boolean; //False = нет доступа
begin
 if RenameFile(FName,FName+'~') then begin
   RenameFile(FName+'~',FName);
   Result:=True;
 end
 else begin
   Result:=False;
 end;
end;


clickmaker   (2005-10-18 16:28:00) [4]

hFile := CreateFile('ddd.doc', GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hFile = INVALID_HANDLE_VALUE) and (GetLastError = ERROR_SHARING_VIOLATION) then
 Уже открыт


umbra   (2005-10-18 16:25:00) [5]


> Skyle ©   (18.10.05 14:44) [3]


это не шутка :)))


Fay   (2005-10-18 15:21:00) [6]

2 BorlandC ©
>> Хочу перезаписать *.doc файл из Delphi
Понятно что из Delphi. Как именно? Давай код.


Skyle   (2005-10-18 14:44:00) [7]

> 2] umbra ©   (18.10.05 14:35)
А почему нет ни одного смайлика?
Сознайся, что пошутил.


umbra   (2005-10-18 14:35:00) [8]

можно перед сохранением файла попробовать удалить существующий. Если он удалится - все в порядке, если нет - надо решить что делать в таком случае


Skyle   (2005-10-18 14:33:00) [9]

Если открыт, то записать не дадут. Возникнет ошибка. "Виснет" - последствия твоей обработки ошибки.
Показывай как обрабатываешь (код).


Наверх

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