Entwickler-Ecke

Dateizugriff - Gleichzeitiger Dateizugriff


Peti - Di 24.09.02 08:49
Titel: Gleichzeitiger Dateizugriff
Hallo zusammen!

Ich habe ein Problem damit, dass ein Programm, welches im Netzwerk auf vielen PCs gleichzeitig läuft, in relativ kurzen Zeitabständen kurze Statusmeldungen in eine ASCI-Datei schreibt (Log). Nun habe ich das Problem, dass der möglicherweise gleichzeitige schreibende und/oder lesende Dateizugriff (mit Assign/Reset/Rewrite usw.) immer wieder zu Problemen führt.

Gibt es eine Möglichkeit, dies zu verhindern? Bieten Streams da bessere Möglichkeiten - oder gibt es auch bei "herkömmlichen" Dateioperationen eine Möglichkeit, gleichzeitig auf Dateien zuzugreifen???

Danke für Tips,
Gruß,
Peti


O'rallY - Di 24.09.02 19:40

Es ist meines Wissens nicht möglich, dass mehere Prozesse gleichzeitig in eine Datei schreiben können ( da es sonst Fehler gäbe), wohl aber können sie gleichzeitig lesend zugreifen. Da ich nur mit Streams arbeite kann ich dir auch nur ein Beispiel dafür liefern:

Quelltext
1:
2:
3:
4:
5:
...
fs: TFileStream;
...
fs := TFileStream.Create('C:\afile.txt', fmCreate or fmShareDenyWrite  );
...

fmShareDenyWrite bewirkt hier, dass immer nur ein Prozess auf die Datei zugreifen kann (schreibend, lesend ist möglich). Eine Liste möglicher Flags gibt's z.B. hier: http://homepages.borland.com/efg2lab/Library/Delphi/IO/StreamIO.htm. Hab ich dir weiterhelfen können?


Peti - Mi 25.09.02 10:09

Super, danke für die Info!

Ich arbeite jetzt mit Streams und das funktioniert einwandfrei....

Gruß,
Peti


O'rallY - Mi 25.09.02 13:34

Freut mich, dass ich dir helfen konnte *g* :wink: .