Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
16. Jun 2020
Es fehlt nicht nur der Aufruf von inherited, sondern unter 10.3 und älter compiliert es gar nicht.
Der Code von DeddyH ist vollkommen ausreichend.
Free ruft Destroy auf und das ist virtual.
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
16. Jun 2020
Das geht auch einfacher:
destructor TStringTree.Destroy;
var
i: Integer;
begin
for i:=0 to Count-1 do begin
Objects .Free;
Objects := nil;
end;
Forum: Object-Pascal / Delphi-Language
by Uwe Raabe,
16. Jun 2020
Dieser Code
Obj_ := Objects ;
FreeStringList(Obj_);
sorgt nicht dafür, das Objects hinterher nil ist! Lediglich Obj_ ist dann nil.
Die Objects Werte in einer TStringList lassen sich nur durch eine direkte Zuweisung auf nil setzen. Eine Übergabe als var Parameter, ob typisiert oder untypisiert, lässt der Compiler aus genau diesem Grund nicht zu.