Eine Möglichkeit (garantiert ohne MemLeaks) wäre
Delphi-Quellcode:
function TBaum.Traversiere( aElement: TElement): TStringList;
var
lSubResult: TStrings;
begin
Result := TStringList.Create;
try
if Assigned( aElement )
then
begin
lSubResults := Traversiere( aElement.gibSohn( ToLinks ) );
try
Result.AddStrings( lSubResults );
finally
lSubResults.Free;
end;
if aElement <> Wurzel
then
Result.Add( aElement.gibInhalt );
lSubResults := Traversiere( aElement.gibSohn( ToRechts ) );
try
Result.AddStrings( lSubResults );
finally
lSubResults.Free;
end;
end;
except
Result.Free;
raise;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)