Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Wie kann ich feststellen, ob Sub-Klasse schon gelöscht ist

  Alt 14. Sep 2023, 12:54
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
  Mit Zitat antworten Zitat