Artikel - Detailansicht

Icon Aktuelles Rekursion

Rekursion ist eine interessante Programmiertechnik, mit der sich oft komplexe Aufgaben sehr einfach gestalten lassen. Dabei ruft sich im Programmablaufe ein Stück Programmcode (im allg. eine Funktion) immer wieder selbst auf und reicht damit eine Teilaufgabe weiter. Gerade zur Bearbeitung von Daten, die in einer Baumstruktur angelegt sind, ist solche eine Programmiertechnik unumgänglich.
Nun kann man zwar in ColdFusion keine Funktionen anlegen, aber Rekursionen sind auch hier möglich.

Zur Demonstration einer in ColdFusion programmierten Rekursion soll die Aufgabe dienen, den Verzeichnisbaum eines vorgegebenen Pfades auszulesen und als Baumstruktur darzustellen. Dazu muss das Programm beginnend von einem Ausgangspunkt sich selbstständig durch alle Unterverzeichnisse laufen. Diese Problemstellungen sind im allg. ideal für Rekursionen.

Zuerst benötigen wir einen Codeabschnitt, der sich selbst aufrufen kann. Das erledigt man in ColdFusion dabei am besten mit einem Customtag. Dazu wird folgender Code benutzt:

<cfparam name="Attributes.path">
<cfdirectory action="list"  
  directory="#Attributes.path#" name="qDir">


<ul>
  <cfoutput query="qDir">
    <cfif qDir.Name neq "."
      and qDir.Name neq ".." and qDir.Type eq "Dir"

      <li><b>#qDir.Name#</b>
        <cf_showDirectoryTree path="#Attributes.path#\#qDir.name#">
      </li>

    </cfif>  
 </cfoutput>

</ul>

Dieses File ist als showDirectoryTree.cfm im Root der Customtags abzuspeichern.
Das Tag liest das durch das Attribut path übergebene Verzeichnis mit dem <cfdirectory>-Tag aus und erhält so ein Queryset mit den Verzeichnisnamen.
Mit dem <cfif> werden die reinen Unterverzeichnisse herausgefiltert. Hat man dann so den Namen eines neuen Unterverzeichnisses erhalten, wird damit wiederum das Tag nochmal aufgerufen. Das Tag hangelt sich so durch alle Unterverzeichnisse bis es kein Unterverzeichnisse mehr findet.

Der Erste Aufruf kann dann in einer normales CFM-Seite folgendermassen aussehen:

<body>
   <b>folgende Verzeichnisse wurden gefunden</b><br>
   <cf_showDirectoryTree path="C:\cfcode">
</body>

Zur Ausgabe wird eine einfache HTML-Liste benutzt, mit der sich sehr leicht Bäume darstellen lassen.

Dieses Prinzip der Programmierung läst sich auf viele andere Aufgaben ausdehnen. Z.B. ist es so leicht möglich, Datenbankeinträge als Baum darzustellen.



Steffen Goldfuss steffen@goldfuss.de - 02.05.2000

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen