Seite 1 von 1

ListDirectory()

Verfasst: 14.04.2008 12:25
von Scarabol
Hi Leute,

Code: Alles auswählen

;
**********************************************************************
;
; ListDirectory() - PB-Include
;
; Author: Scarabol
; Version: 4.10
; Datum: 14-02-2008
;
; **********************************************************************
;
; ListDirectory(Directory$, Level, Pattern$)
;
; Beschreibung:
;   Listet alle im Verzeichnis befindlichen Dateien und Unterverzeichnisse auf.
;
; Rückgabewert:
;   Die Funktion gibt einen String zurück.
;   Die Einträge sind durch Chr(10) getrennt.
;

Procedure.s ListDirectory(directory$, level.l=0, pattern$="*.*")
  Protected dir$, d.l, t$
  d = ExamineDirectory(#PB_Any, directory$, pattern$)
  While NextDirectoryEntry(d)
    If DirectoryEntryType(d) = #PB_DirectoryEntry_Directory
      If Not (DirectoryEntryName(d) = "." Or DirectoryEntryName(d) = "..")
        dir$ + directory$+DirectoryEntryName(d)+"\" + Chr(10)
        If level > 0
          t$ = ListDirectory(directory$+DirectoryEntryName(d)+"\", level-1)
          If t$
            dir$ + t$
          EndIf
        EndIf
      EndIf
    ElseIf DirectoryEntryType(d) = #PB_DirectoryEntry_File
      dir$ + DirectoryEntryName(d) + Chr(10)
    EndIf
  Wend
  ProcedureReturn dir$
EndProcedure

; **********************************************************************
;
; ListDirectory() - Example

EnableExplicit

Define d$
Define c.l

d$ = ListDirectory("C:\Windows\")

For c = 1 To CountString(d$, Chr(10))+1
  Debug StringField(d$, c, Chr(10))
Next

;
; **********************************************************************
Gruß
Scarabol

Verfasst: 14.04.2008 12:34
von STARGÅTE
lol ?
Wozu gibs den Parameter Pattern$, wenn dieser einfach ignoriert wird ?

Code: Alles auswählen

ListDirectory("C:\", 0, "Thumbs.db")

Re: ListDirectory()

Verfasst: 14.04.2008 12:35
von Kiffi
da musste noch mal die Beschreibung zum Code anpassen:

-> gibt alle Ordner rekursiv zurück
-> gibt alle Dateien auf Ebene 1 zurück

;-)

Grüße ... Kiffi

Verfasst: 14.04.2008 16:30
von Joel
Der Code oben gibt bei Dateien ja z.B. "Test.txt" zurück, bei Ordnern jedoch den Kompletten Pfad, was muss ich an dem Programm oben machen, damit es bei Ordnern auch nur den Ordnernamen zurückgibt???

Verfasst: 14.04.2008 16:33
von Scarabol
Hi,

dir + directory + directoryentry...

Hier musste das directory weglassen...

Gruß
Scarabol

Verfasst: 14.04.2008 16:38
von Joel
Danke!!!!!!! Klappt Perfekt!!!!!

Verfasst: 14.04.2008 16:47
von Kiffi
@Scarabol: nochmal zur Nachfrage: Der Code soll alle Unterordner
und alle darin befindlichen Dateien eines angegebenen Pfades
zurückgeben?

Grüße ... Kiffi

Verfasst: 14.04.2008 18:34
von Scarabol
Der gibt alle Ordner und Dateien bis zur angegebenen Tiefe (level) an.

Gruß
Scarabol

Verfasst: 14.04.2008 18:52
von STARGÅTE
naja funzt aber immer noch nicht richtig (vlt solls auch so sein)

Wenn ich jetzt nach Thumbs.db suchen lasse mit 4 Stufen, werde die unterordner ignoriert.
Du müsstest also die Unterordnersuche und rekursivität in einer eigenen schleife packen und dann die spezielle Dateisuche in einer anderen.

Hier mal meine Procedure

Verfasst: 14.04.2008 18:52
von NicTheQuick
Das ist aber nicht schön, alles so in einen String zu packen. Je mehr Dateien
das werden, desto unhandlicher und langsamer wird das, weil nach jeder
Datei wieder Speicher allokiert werden muss, damit sie an die anderen
angehängt werden kann.