Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tiefe einer rekursiven Funktion (https://www.delphipraxis.net/40649-tiefe-einer-rekursiven-funktion.html)

Luckie 18. Feb 2005 20:44


Tiefe einer rekursiven Funktion
 
Ich durchsuche mit einer Rekursiven Funktion Verzeichnisse und erstelle mir damit eine Html-Datei mit den Verzeichnisnamen und den enthaltenen Dateien. Funktioniert prima.
Jetzt will ich die Überschriftenebenen passend zur Verzeichnistiefe formatieren. Also H! für die oberste, H2 für die darunter, H3 für noch eins tiefer. Jetzt ist das Problem: Wie kann ich festellen, wann er im Verzeichnisbaum wieder eine Ebene höher geht?

Zur Verdeutlichung:

Code:
Root
 |-Sub1
 |  |-Sub1_1
 |  |-Sub1_2
 |-Sub2
    |-Sub2_1
    |-sUB2_2
Ergebnis:
Code:
H1: Root
  H2: Sub1
    H3: Sub1_1
    H3: Sub1_2
  H2: Sub2
    H3: Sub2_1
    H3: Sub2_2
Ich komme einfach nicht drauf, wie ich das hinbekommen soll. Ich glaube, ich sehe den Wald vor lauter Bäumen nicht. :wall:

Dax 18. Feb 2005 20:48

Re: Tiefe einer rekursiven Funktion
 
Ich mache es immer so, dass ich vor dem Aufrufen in die Funktion einen Wert inkrementiere und nach dem verlassen den Wert wieder runterzähle. Mit Startwert 0 weißt du dann in deiner Funktion immer, wie tief du schon in die Verzeichnisse "eingestiegen" bist ;)

Luckie 18. Feb 2005 20:50

Re: Tiefe einer rekursiven Funktion
 
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:

alcaeus 18. Feb 2005 20:51

Re: Tiefe einer rekursiven Funktion
 
Hallo Luckie,

probiers mal so:
Delphi-Quellcode:
function DeineFunc(..., Level: Integer): ...;
begin
...
DeineFunc(..., Level+1);
end;
Bei mir funktionierts immer so, also wenn du die Funktion mit Level=1 aufrufst, dann brauchst du nur noch 'H'+IntToStr(Level) ausgeben, und du hast deine Ueberschrift ;)

Greetz
alcaeus

[add]:lol:[/add]


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz