Pruefen, ob Datei in Gebrauch

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Pruefen, ob Datei in Gebrauch

Beitrag von Hercules »

Hallo und schönen Guten Tag an Alle,

ich muss in einer Anwendung herausfinden, ob eine Text-Datei
bereits in Gebrauch ist. Kann mir jemand sagen, wie das geht ?

Mit freundlichen Grüssen, Hercules.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Pruefen, ob Datei in Gebrauch

Beitrag von Socke »

Ein einfacher, aber möglicherweise fehleranfälliger Weg ist folgender:
Wenn ein erstes Programm eine Datei bereits geöffnet hat, kann ein zweites Programm keinen exklusiven Zugriff erhalten. Funktioniert möglicherweise nicht auf allen Plattformen: http://lazarus-ccr.sourceforge.net/docs ... eopen.html

Code: Alles auswählen

program Project1;
 
{$H+}
 
uses
 sysutils;
 
var
  fh: sysutils.THandle;
begin
  WriteLn('Datei: ', ParamStr(1));
  fh := FileOpen(ParamStr(1), fmOpenReadWrite or fmShareExclusive);
  if LongInt(fh) = -1 then
    WriteLn('Datei in Gebrauch')
  else
  begin
    Writeln('Datei nicht in Gebrauch');
    FileClose(fh);
  end;
end.

P.S. hier wird nicht geprüft, ob die Datei überhaupt existiert - wenn sie nicht existiert wird auch "Datei in Gebrauch" ausgegeben.

Alternativ kann man das Betriebssystem fragen, welche Prozesse es alles gibt. Dann fragt man, welche Dateien dieser Prozess geöffnet hat. Unter Linux ließt man dazu die Symlinks unter /proc/<PID>/fd/ aus.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Pruefen, ob Datei in Gebrauch

Beitrag von Hercules »

Hallo Socke,
vielen Dank für Deine Antwort.
Werde das mal ausprobieren.
M.f.G. Hercules :D

Hercules
Beiträge: 104
Registriert: Mi 2. Jun 2010, 17:56
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Pruefen, ob Datei in Gebrauch

Beitrag von Hercules »

Hallo Socke,
hab' Deinen Tip ausprobiert,
haut wunderbar hin.
Hab' vorher noch eine Abfrage
eingebaut, ob die Datei überhaupt
vorhanden ist, funktioniert optimal.
Vielen Dank und schöne Feiertage !
Hercules.

Antworten