Zitat von
RedShakal:
Das Problem ist doch noch nicht so gelöst wie ich dachte.
1. Das Problem mit dem Datumsseparator:
DateSeparator := '.';
2. Das Problem mit dem mehrfachen Aufruf:
procedure TServer.IdTCPServer1Execute(AThread: TIdContext);
Ist ein Serverthread, dieser wird auch mehrfach aufgerufen werden können.
Dh. Die Log-Schreiberei und Globalen Variablen müssen Threadsave sein, sonst knallts sowiso irgendwann.
Tip: Das Logging in eine Threadsave Funktion auslagern, und mit CriticalSections synchronisieren.
Delphi-Quellcode:
var
_SyncLog: TRTLCriticalSection;
procedure LogWrite(const ALogfile, AMessage: string);
var
f: TextFile;
begin
EnterCriticalSection(_SyncLog);
try
AssignFile(f, ALogfile);
try
{$I-}
if FileExists(ALogfile) then Append(f) else Rewrite(f);
if IOResult <> 0 then Reset(f);
{$I+}
Writeln(f, AMessage);
finally
CloseFile(f);
end;
finally
LeaveCriticalSection(_SyncLog);
end;
end;
initialization
InitializeCriticalSection(_SyncLog);
finalization
DeleteCriticalSection(_SyncLog);
end.
lg. Astat