Zur Verdeutlichung meines Hinweises aus Beitrag #4:
Delphi-Quellcode:
procedure TBauteilListe.MakeList(const s: TStrings);
procedure FetchItem(p: PBauteil);
var
i: integer;
begin
if Assigned(p.Next) then
for i := Low(p.Next) to High(p.Next) do
if Assigned(p.Next[i]) then
FetchItem(p.Next[i])
else s.Add(p.ID)
end;
begin
s.Clear;
FetchItem(FRoot);
end;
Freundliche Grüße