Servus,
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
d.h. TTEst legt die Instanz von TValues nicht an, sondern bekommt die zugewiesen oder holt die sich wo her. Bisher hat sich bei mir folgendes bewährt:
Wer Objekte anlegt, der gibt die auch wieder frei (keine Regel ohne Ausnahme). D.h. du kannst so vorgehen wie jziersch vorschlägt. Oder du sagst etwas mehr darüber wie die KLassen zueinander finden.
ein FreeAndNil funktioniert nicht, weil die Funktion eben einen Var-Parameter braucht. Lösen kannst Du das mit einem Zweizeiler:
Delphi-Quellcode:
for i := 0 to TestList.Count do
if (TestList[i].Values <> nil) then
begin
TestList[i].Values.Free;
TestList[i].Values := nil;
end
allerdings klappt das im weiteren Verlauf nicht weil:
Es kann es sein, dass mehrere TTest auf das gleich TValues zeigen
Daher bleibt
imho nix anderes als eine zentrale Liste / Klasse, die die Lebensdauer von TValues überwacht, erstellt, freigibt. Wenn Du zum drum herum noch das eine oder andere sagen kannst, dann kann man hier vielleicht auch noch den einen oder anderen Tipp geben.
Grüße