Zitat von
sx2008:
Wenn man eine Datei öffnet kann man Sharing-Flags angeben:
a) andere Prozesse dürfen Lesen & Schreiben
b) andere Prozesse dürfen nur Lesen
c) andere Prozesse dürfen nur Schreiben (eher ungewöhnlich)
d) andere Prozesse dürfen gar nichts (Exclusiv Modus)
Der Begriff "andere Prozesse" ist etwas ungenau: man kann die gleiche Datei auch mehr als einmal öffnen und hat dann den gleichen Status wie fremde Prozesse.
Ausserdem muss man angeben, ob man die Datei lesen/schreiben oder beides möchte.
Wenn der Dateiersteller die Variante c) oder d) wählt, dann kann die Datei von niemand anderem gelesen werden, solange sie noch im Zugriff ist.
Wenn das Öffnen wie in Betrag #15 versagt, hat man einfach Pech gehabt weil einer der anderen beteiligten Prozesse (in aller Regel der Dateiersteller) das Lesen nicht zulässt.
Man müsste schon die Sperren des Betriebssystems umgehen, um da dran zu kommen.
Hab das noch mal getestet und bin drauf gekommen das ich vorhin einen kleinen Fehler gemacht habe.
Die Datei wird vom Service nicht mit einem Filestream sondern so aufgemacht:
Delphi-Quellcode:
AssignFile(vFileHandle, vAktLogFilename);
if FileExists(vAktLogFilename) then Append(vFileHandle)
else Rewrite(vFileHandle);
Warum funktioniert meine Tail funktion bei dem nicht?
Mit Notepad und so bekomme ich sie ja auch auf.
Mit welchen "Rechten" wird die Datei bei der obrigen function aufgemacht?