Verfasst: 07.08.2006 03:26
Du könntest über die Enumerate Funktion des FileSystems dir alle Dateien in dem Ordner auslesen lassen und die dann schicken, und wenn das gefundene ein Ordner ist das wird der gleiche Programmcode nochmal ausgeführt, das wäre dann eine rekursive Funktion, die dann ein verzeichniss und alle unterordner nach Ddateien durchsucht und diese halt zurückgibt
klingt schwerer als es ist.
Rekursiver -programm bzw. -funktions Aufruf bedeutet nichts weiter, als dass sich die Funktion selber aufruft.
Und um das dann ein bisschen logisch zu verwalten, dieses Verzeichniss listing empfehle ich eine Liste. (Ja sorry aber bei mir hat jedes Programm Listen für alles... xD)
Das sieht das inetwa so aus, so als Snippet einfachmal so hergesetzt:
EDIT: Bug behoben... es fehlte das "UseDirectory(DirectoryID) "
MFG
Blackskyliner

Rekursiver -programm bzw. -funktions Aufruf bedeutet nichts weiter, als dass sich die Funktion selber aufruft.
Und um das dann ein bisschen logisch zu verwalten, dieses Verzeichniss listing empfehle ich eine Liste. (Ja sorry aber bei mir hat jedes Programm Listen für alles... xD)
Das sieht das inetwa so aus, so als Snippet einfachmal so hergesetzt:
Code: Alles auswählen
Structure teststruc
sPath.s
EndStructure
NewList TestListe.teststruc()
Global lol.l, lol2.l
Procedure Rekursiv_Verzeichnis_Listing(DIR$)
Protected Eintrag.l
;Hier wird erstmal das über DIR$ übergebene Verzeichniss
;ausgelesen, damit man dann darauf zugreifen kann.
DirectoryID = ExamineDirectory(#PB_Any, DIR$, "")
;Wenn dies Erfolgreich war, also wenn z.B. der Ordner exsistiert
;Dann mach weiter ansonsten ist hier Schluss =)
If DirectoryID
;Schleife um auch alles durchzugehn ;)
Repeat
Eintrag = NextDirectoryEntry()
;Wenn Verzeichniss dann Funktion nochmalaufrufen
;und danach Wieder mit dem Verzeichniss weiter machen
If Eintrag = 2
VerzechnissName$ = DirectoryEntryName()
If VerzechnissName$ <> "." And VerzechnissName$ <> ".."
Rekursiv_Verzeichnis_Listing(DIR$+VerzechnissName$+"\")
UseDirectory(DirectoryID)
EndIf
;Wenns ein File ist dann adde den File in die Directory Liste
ElseIf Eintrag = 1
DateiName$ = DirectoryEntryName()
Endung$ = GetExtensionPart(DIR$+DateiName$)
AddElement(TestListe())
TestListe()\sPath = DIR$+"\"+DateiName$
EndIf
;Wenn das nun nichtsmehr ist beende die Schleife
Until Eintrag = 0
EndIf
EndProcedure
Rekursiv_Verzeichnis_Listing("C:\Dokumente und Einstellungen\Blackskyliner\")
ResetList(TestListe())
ForEach TestListe()
Debug TestListe()\sPath
Next
MFG
Blackskyliner