Delphi-Quellcode:
function TBauteilListe.GetLines: TStringlist;
procedure Rekursiv(p: PBauteil; var Lst: TStringlist);
var i: integer;
begin
if p <> nil
then
begin
if p^.Next <> nil
then
for i := low(p^.next) to high(p^.next) do
begin
Rekursiv(p^.next[i],Lst);
end;
Lst.Add(p^.ID)
end;
end;
var Lst: TStringlist;
begin
Result := TStringList.Create;
Lst := TStringlist.Create;
Result.Clear;
Lst.Clear;
Rekursiv(FRoot,Lst);
Result := lst;
end;
So scheint das zu Funkrionieren aber:
Result := Lst;
Was ist mit dem Speicher, auf den der Pointer vorher gezeigt hat?
Und wenn ich Result oder Lst freigebe, dann dann ist das Result ja wieder nil, folglicherweise müsste es dann doch wider krachen oder? Wo kann ich die Listen wieder freigeben? Das habe ich noch nicht ganz verstanden