Einzelnen Beitrag anzeigen

Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Problem mit einer Stringlist

  Alt 11. Jan 2007, 08:35
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
Richard Mahr
  Mit Zitat antworten Zitat