Zitat von
NicoDE:
Zitat von
Meta777:
Aber die lokale Variable befindet sich doch im Stack des jeweiligen Threads!?
Nope, im lokalen Stack der aufrufenden Funktion (dieser ist nach dem Verlassen der Funktion nicht mehr gültig).
Bedeutet das nun wenn 2 Threads "gleichzeitig" die procedure procedure "TfrmProt.Add2Prot(const AStr: String);" aufrufen, dass es dann nicht gehen kann?
Und wird beim Aufruf von TLog.Add(prtData) der Record kopiert oder nur ein Pointer weitergegeben?
Delphi-Quellcode:
procedure TfrmProt.Add2Prot(const AStr: String);
var
prtData: TDaPrtData;
begin
FillChar(prtData, SizeOf(prtData), #0);
prtData.Msg := AStr;
TLog.Add(prtData); //WIRD DER RECORD HIER KOPIERT????
end;