![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить что файл уже открыт? [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]Если открыт, то записать не дадут. Возникнет ошибка. "Виснет" - последствия твоей обработки ошибки.
Показывай как обрабатываешь (код).