Entwickler-Ecke

Dateizugriff - Ermitteln ob Datei geöffnet ist


Jacdelad - Sa 13.05.06 13:01
Titel: Ermitteln ob Datei geöffnet ist
Hallo,

gibt es eine Funktion mit der man ermitteln kann, ob eine Datei (Variable vom Typ file oder textfile) geöffnet ist?

Jac


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 14.05.2006 um 11:49


azubi_20 - Mo 15.05.06 08:57

Hi
du könntest versuchen, auf die Datei zuzugreifen. Mit nem Try-Exceptblock kannst du dann prüfen ob es geklappt hat. Wenn nicht -> Datei ist geöffnet. (könnte aber auch schreibgeeschützt sein)


raiguen - Mo 15.05.06 09:16

Moin :-)
Schau mal diesen Beitrag [http://www.delphi-forum.de/topic_Pruefen+ob+eine+datei+benutzt+wird_59595.html]


DaKirsche - Mo 15.05.06 09:22


Delphi-Quelltext
1:
uses FileCtrl;                    


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function IsFileInUse(Path: string): boolean;
var
  hFile: THandle;

begin
  Result := False;
  if not FileExists(Path) then Exit;

  hFile := CreateFile(pchar(Path), GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE,
                      0nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  Result := hFile = INVALID_HANDLE_VALUE;
  if not Result then CloseHandle(hFile);

end{function IsFileInUse() ...}

Aufgerufen werden kann die Funktion Beispielsweise so:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsFileInUse(Application.Exename) then
    Showmessage('Die Datei ist in Benutzung');
end;


Jacdelad - Mo 15.05.06 17:27

Ähh, danke für die Hilfe!

Ich meinte eine Datei, die unter Umständen von meinem Programm geöffnet ist (sorry, das hab ich leider vergessen zu erwähnen), deshalb hab ichs jetzt über ein Boolean gelöst, das erscheint mir am einfachsten.

Danke,
Jac


IceFire - Mo 22.05.06 15:10

Hallo!

Habe die Funtion gerade eingebaut, allerdings habe ich damit ein Problem. Wenn ich damit versuche, auf freigegebene Dateien im Netzwerk ('\\196.0.0.8\II\readme.txt') zuzugreifen, meldet mir die Funktion immer, dass die Datei geöffnet ist.

Wie ist die Funktion zu modifizieren, damit Netzwerkressourcen auch geprüft werden können?