Forum: Sonstige Fragen zu Delphi
Delphi
by Astat,
21. Dez 2009
Hallo, als Brutalmethode kannst du folgendes verwenden!?
var
_Sync: TRTLCriticalSection;
procedure TServer.IdTCPServer1Execute(AThread: TIdContext);
var
Data : String;
StrArr : TDynStringArray;
Forum: Sonstige Fragen zu Delphi
Delphi
by Astat,
21. Dez 2009
Hallo RedShakal.
Zeig doch mal den umgebauten, Threadsaven Code, warum das nicht gehen soll ist mir ein Rätsel.
Der beschriebene Fehler mit IO tritt in Deinem Sample nur dann auf wenn was mit der Threadsynchronisierung nicht stimmt.
Du hast doch synchronisiert, oder?
lg. Astat
Forum: Sonstige Fragen zu Delphi
Delphi
by Astat,
21. Dez 2009
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.
Forum: Sonstige Fragen zu Delphi
Delphi
by Astat,
21. Dez 2009
Hallo RedShakal, womöglich liegts an der IO Prüfung?
AssignFile(f, 'log\' + DateToStr(Date) + '.txt');
if FileExists('log\' + DateToStr(Date) + '.txt') then
{$I-} Append(f) else Rewrite(f); {$I+}
if IOResult <> 0 then RaiseLastWin32Error;