Gemeinde.
Es tut mir schrecklich leid, wenn ich nicht die richtigen Ausdrücke und Worte finde für mein Problem.
Ich habe ein packed Record, etwa so:
Delphi-Quellcode:
type
PData = ^TData;
TData = packed record
sBeispielVar: String;
end;
und folgendermaßen erzeuge ich einen neuen Datensatz, wenn erforderlich und speichere ihn/einen Verweis zum ihm (?) in einer TList:
Delphi-Quellcode:
var
Data: PData:
begin
New(Data);
Data^.sBeispielVar := 'Test';
DataList.Add(Data);
end;
Zuvor habe ich einen Eintrag mit
DataList.Delete(X);
gelöscht und Data finalisiert:
finalize(Data^);
.
Aber finalize scheint nicht thread-safe zu sein.
Die Frage ist: wird bei
DataList.Delete(X);
der komplette Datensatz Data, der an dieser Stelle X gespeichert ist, mit gelöscht?