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.
Pruefen, ob Datei in Gebrauch
-
- 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
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
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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- 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
Hallo Socke,
vielen Dank für Deine Antwort.
Werde das mal ausprobieren.
M.f.G. Hercules
vielen Dank für Deine Antwort.
Werde das mal ausprobieren.
M.f.G. 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
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.
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.