Seite 2 von 2
Verfasst: 13.03.2006 09:46
von Lebostein
Hier das gleiche mit PB 3.X, leider gibt es hier noch keinen Befehl, um ein Suchverzeichnis wieder zu entfernen (FinishDirectory)
Code: Alles auswählen
; ----------------------------------------
Procedure ListFiles(EntryPath.s)
EntryPath + "\"
UsedDirectory = ExamineDirectory(#PB_Any, EntryPath, "*.*")
Repeat: UseDirectory(UsedDirectory)
EntryType.l = NextDirectoryEntry(): If EntryType = 0: Break: EndIf
EntryName.s = DirectoryEntryName()
If EntryName = "." Or EntryName = "..": Continue: EndIf
If EntryType = 1: Debug "File: " + EntryPath + EntryName: EndIf
If EntryType = 2: ListFiles(EntryPath + EntryName): EndIf
ForEver
EndProcedure
; ----------------------------------------
ListFiles("c:\windows")
Re: Verzeichnisbaum rekursiv durchgehen...
Verfasst: 16.04.2011 18:20
von Renovatio
Ich habe mir mal diesen Code kopiert und an meine Bedürfnisse angepasst, nur funktioniert das jetzt nicht immer.
Meine Anwendung hängt sich dann bei bestimmten Verzeichnissen auf.
Bekomme auch folgenden Fehler: Das angegebene #Directory ist nicht initialisiert
Woran kann das liegen?
Hier ist der Code
Code: Alles auswählen
Procedure FileManager_CheckFiles(Path$)
Path$ + "\"
Files = 0
Dir = ExamineDirectory(#PB_Any, Path$, "*.*")
While NextDirectoryEntry(Dir)
Name$ = DirectoryEntryName(Dir)
Type = DirectoryEntryType(Dir)
Size = (DirectoryEntrySize(Dir) / 1024) / 1024
If Name$ = "." Or Name$ = ".." : Continue : EndIf
If Type = #PB_DirectoryEntry_File
FileManager_Files + 1
FileManager_TotalSize + Size
FileType$ = Right(Name$, 4)
AddGadgetItem(#GadgetVideosFiles, -1, RemoveString(Name$, FileType$) + Chr(10) + Str(Size) + " MB" + Chr(10) + UCase(FileType$) + "-Datei")
EndIf
If Type = #PB_DirectoryEntry_Directory
FileManager_CheckFiles(Path$ + Name$)
EndIf
Wend
FinishDirectory(Dir)
EndProcedure
Bei dem Pfad -> "F:\02 » Movies\Filme" funktioniert's und bei allen anderen die mit C zu tun haben leider nicht.
Gruß
Renovatio
Re: Verzeichnisbaum rekursiv durchgehen...
Verfasst: 16.04.2011 18:40
von STARGÅTE
An deiner Stelle würde ich einfach mal prüfen ob ExamineDirectory() erfolgreich war!
Wenn nicht, ist es natürlich klar, das dann das folgende NextDirectoryEntry() einen fehler verurscht.
Beispiel: "C:\System Volume Information" wird als Ordner erkannt, kann aber nicht gelesen werden.
Also einfach ein "If Dir" mit einbauen.
Re: Verzeichnisbaum rekursiv durchgehen...
Verfasst: 16.04.2011 18:50
von Renovatio
STARGÅTE hat geschrieben:An deiner Stelle würde ich einfach mal prüfen ob ExamineDirectory() erfolgreich war!
Wenn nicht, ist es natürlich klar, das dann das folgende NextDirectoryEntry() einen fehler verurscht.
Beispiel: "C:\System Volume Information" wird als Ordner erkannt, kann aber nicht gelesen werden.
Also einfach ein "If Dir" mit einbauen.
Ja ! Affengeil ! xD
Wie immer besten Dank für diese schnelle Hilfe!
Wie oft man den Wald vor lauter Bäumen nicht sehen kann?!