Hallo Jens,
Du schriebst am Thu, 19 Nov 2020 03:05:20 +0100:
> Hallo,
>
> ich habe eine Liste folgender Natur:
>
> + root Level: 10
> |
> +--- blub1 21
> +--- blub2 22
> +--- blub3 23
> | |
> | +--- bla1 31
> +--- foo 41
> |
> +--- foo1 42
> +--- foo2 43
> ...
>
> wie kann ich das am besten rekursiv durchlaufen?
> Also nicht als OOP mit Delphi LoadFromFile und so
> weiter, rein Pascal ... ?
Rekursiv heißt hier effektiv "depth first". Also etwa
PROCEDURE ScanList (Eintrag: ListNode);
BEGIN
// Ggfs. "Eintrag" bearbeiten
WITH Eintrag DO
FOR i:= <erster Unterknoten> TO <letzter Unterknoten> DO
ScanList (<Unterknoten> [i]);
END;
oder, wenn die Unterknoten nicht als Array, sondern als verlinkte Liste
vorliegen
PROCEDURE ScanList (Eintrag: ListNode);
BEGIN
// Ggfs. "Eintrag" bearbeiten
WITH Eintrag DO
WHILE <Unterknoten> <> NIL DO
ScanList (<Unterknoten>^);
END;
Kommt halt darauf an, wie Deine Listenelemente ("Knoten") organisiert sind.
Die Struktur ist ja nicht verfügbar.
> folgendes liegt bereits vor:
> 1x der Level der Items sowie der Item-Name.
Wird nicht gebraucht, ergibt sich automatisch.
> Soll einfach nur eine Liste durchlaufen, die dann
> ein wenig Text ausgibt.
Das wäre das "Eintrag bearbeiten" (das kann auch am Schluß stehen, dann
ändert sich halt die Reihenfolge).
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------