Solche parallelen Zugriffe must Du kapseln. Windows und damit Delphi bieten Dir diverse Werkzeuge zur Synchronisation. Wenn Du innerhalb eines Prozesses (nicht Thread) darauf zugreifst, reicht eine 'Critical Section'. Ansonsten, also wenn z.B. zwei Prozesse parallel auf etwas zugreifen müssen, dann muss man andere Mechanismen (z.B. Mutexe) verwenden.
Die
Unit SyncObjs hält alle Delphi-Objekte bereit, um Dein Problem zu lösen.
Delphi-Quellcode:
Uses ... SyncObjs...;
Var
MyCS : TCriticalSection;
Procedure ThreadSafeAdd (Var aSrc : String; Const aString);
Begin
MyCS.Enter;
Try
aSrc := aSrc + aString;
Finally
MyCS.Leave;
End;
End;
Initialization
MyCS := TCriticalSection.Create;
Finalization
MyCS.Free;
End.
Natürlich sollte man sowas als Klasse 'TThreadSafeString' implementieren.