Hallo zusammen
ich habe vereinfacht folgende Klassen struktur:
Delphi-Quellcode:
Tvalues:Class
x:Double;
y:Double;
end;
TTest:Class
Name:String;
Values:TValues;
end;
TTestListList = class(TObjectList<TTest>)
Es kann es sein, dass mehrere TTest auf das gleich TValues zeigen
Jetzt will ich in allen TTest, denen ein TValues zugewiesen ist, dieses löschen
Delphi-Quellcode:
for i := 0 to TestList.Count do
if (TestList[i].Values <> nil) then
TestList[i].Values.Free;
Da Free Values nicht auf nil setzt, schlägt die Prüfung gegen nil beim nächsten TTest mit demselben TValues fehl und Delphi hängt sich beim nochmaligen Value.Free auf.
Einfach
TestList[i].Values := nil;
ist auch keine gute Lösung, da ich dann lauter Leichen rum liegen habe
Mir alle TValues merken und sie, nachdem ich alle
TestList[i].Values := nil
gesetzt habe, scheint mir aufwändig
Wie aber kann ich TValues löschen (Free) und dann auch merken, dass der bereits gelöscht wurde.
Danke
Gerd