![]() |
Prüfen, ob eine Datei geöffnet werden kann
Hallo,
hab' eine eigendlich recht einfache Frage: Wie kann man prüfen, ob eine Datei zum lesen geöffnet werden kann (z.B. also von keinem anderen Programm gerade geöffnet ist)? Ich hab's bisher mit folgender Funktion probiert, allerdings wird z.B. ein gerade geöffnetes Excel-File problemlos durchgereicht (was dann später zu nem I/O Error 32 führt):
Delphi-Quellcode:
Thanks,
function CanOpenFile(const aName: string; var ReadOnly: Boolean): Boolean;
var HFileRes: hFILE; fStream: tFileStream; begin Result := False; ReadOnly := True; HFileRes := 0; if FileExists(aName) = True then begin try fStream := TFileStream.Create(aName, fmOpenRead OR fmShareDenyNone); try Result := true; Try HFileRes := CreateFile(pchar(aName), GENERIC_READ or GENERIC_WRITE, 0 , nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); ReadOnly := (HFileRes = INVALID_HANDLE_VALUE); Finally If HFileRes <> 0 then CloseHandle(HFileRes); End; finally fStream.Free; end; except Result := false; end; end; end; Gerald |
Re: Prüfen, ob eine Datei geöffnet werden kann
Ich vermute, dass Deine Routine schon korrekt ist. Jedoch arbeitet Office mit temporären Dateien, die parallel zu Deiner Datei angelegt werden, vermutlich darfst Du also die geöffneten Office Files trotzdem noch öffnen.
Probiere es mal so:
Delphi-Quellcode:
Function TryOpen(FileName: String):Boolean;
var aFile: File; begin Result := False; AssignFile(aFile, FileName); Try Try Reset(aFile); Finally CloseFile(aFile); End; Result := True; Except End; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz