Zitat von
ibp:
hier meine Lösung, kommt ohne zusätzliche Variable aus...
Nicht wirklich ... jedenfalls nicht, wenn man die Rücksprungadresse und den eventuellen Stackframe für den rekursiven Aufruf und sonstige Variablen mitzählt.
Iterativ und mit wirklich nur einer Variable:
Delphi-Quellcode:
procedure Grab(Node: TTreeNode);
var
TmpNode : TTreeNode;
begin
TmpNode := Node.getFirstChild;
while Assigned(TmpNode) do
begin
showmessage(TmpNode.Text);
TmpNode := TmpNode.GetNext;
end;
end;
gut, sowas wäre auch noch möglich
Delphi-Quellcode:
procedure Grab(Node: TTreeNode);
begin
Node := Node.getFirstChild;
while Assigned(Node) do
begin
showmessage(Node.Text);
Node := Node.GetNext;
end;
end;
Dieses sollte für den Stack und auch sonst speichertechnisch die sparsamste Variante darstellen.
[add]
Zitat:
ttreeview ab einem Unterknoten alles auslesen
Willst du jetzt alles auslesen oder nur alle Unterknoten eines bestimmten Knotens?
Wenn nur alle Unterknoten dann müßte man noch prüfen, ob TmpNode unterhalb von Node liegt oder man verwende doch eine rekursive Methode.
z.B.:
Delphi-Quellcode:
procedure Grab(Node: TTreeNode);
var
EndNode : TTreeNode;
begin
EndNode := Node.GetLastChild;
Node := Node.GetFirstChild;
if Assigned(Node) then
repeat
showmessage(Node.Text);
Node := Node.GetNext;
until EndNode = Node;
end;