das mit fmShareExclusive wurde ja schon angesprochen,
aber gern nochmals - dieses sorgt dafür daß NUR Einer zur selben Zeit die Datei öffnen kann und nicht Mehrere.
ups, ja stimmt ... ohne TimeOut wird die Schleife ja nicht verlassen, bevor die Datei nicht geöffnet wurde, also kein Problem,
aber mit TimeOut sollte man die mögliche
Exception bei CloseFile natürlich auch abfangen,
also
{$I-} CloseFile(F); {$I+}.
Und was das Arbeiten mit Exceptionen angeht, klar ist es möglich, aber hier gab's schonmal ein Streitgespräch darüber, ob man überhaupt absichtlich Exceptionen auslösen soll, um den Programmablauf zu steuern und da meinten die Meisten berechtigt nein.
Zitat von
peschai:
Wer also das Hauptlog exclusiv öffnen kann, muss zuerst die anderen templogs auslesen und reinschreiben, dann diese templogs löschen und dann erst seine eigenen Sachen eintragen ...
was meint ihr ?
ja und dann muß man wieder die TempLogs gegen gleichzeitigen Zugriff absichern,
denn wenn ein anderer Prozess grad noch in ein TempLog reinschreibt, dann gibt es bestimmt Probleme wenn plötzlich gleichzeitig jemand anderes versucht diesen auszulesen (um ihn in den HauptLog einzutragen).
im Prinzip eine nette Lösung, aber da es sich hier nur um kurzzeitige Sperrungen des HauptLogs handelt (eie Zeile einzufügen dauert ja nicht lange), wäre der Aufwand wohl eher zu groß.
Sowas würde sich mehr für Dinge lohnen wo die Sperrung viel zu lange zum Warten dauert.
Alternativ könnte man auch im Programm sowas wie eine Warteliste anlegen, wo man die Logeinträge einfügt und welche dann bei nächster Gelegenheit in die Logdatei eingetragen werden.