prüfen ob Ordner leer ist
Verfasst: 18.12.2005 19:59
wie kann ich prüfen ob ein ordner leer ist? und zwar in mitten einer seach action, also ich lasse alles absuchen und wenn der ordner leer ist soll er den überspringen
sen-me hat geschrieben:wie kann ich prüfen ob ein ordner leer ist?
Geht das damit nicht ?Ergebnis = NextDirectoryEntry() .....'Ergebnis' kann die folgenden Werte annehmen:
0: keine weiteren Einträge im Verzeichnis
1: dieser Eintrag ist eine Datei
2: dieser Eintrag ist ein Verzeichnis
Code: Alles auswählen
; German forum: http://forums.purebasic.com/german/viewtopic.php?t=6117
; Author: Laurin
; Date: 18. December 2005
Procedure.l IsEmptyDir(Dir.s)
Protected DirElement.l ; Variablen, die benötigt werden und nicht(!) in Konflikt
; mit gleichnamigen globalen Varaiblen geraten sollen.
ExamineDirectory(#PB_Any, Dir, "*.*") ; Verzeichnis "öffnen"
Repeat ; jedes Verzeichniselement prüfen
DirElement = NextDirectoryEntry() ; schauen wir uns das nächste Element des Verzeichnisses an
Select DirElement
Case 1 ; Datei gefunden
ProcedureReturn #False ; -> raus aus der Procedure
Case 2 ; Verzeichnis gefunden
If DirectoryEntryName() <> "." ; Das Verzeichnis "." ist ein Platzhalter für das aktuelle Verzeichnis. (*)
If DirectoryEntryName() <> ".." ; Das Verzeichnis ".." ist ein Platzhalter für das übergeordnete Verzeichnis. (*)
ProcedureReturn #False ; -> raus aus der Procedure
EndIf
EndIf
EndSelect
Until DirElement = 0 ; 0 = kein weiteres Element im Verzeichnis
ProcedureReturn #True
;(*)
; "." und ".." sind Bestandteil eines jeden Verzeichnisses unter Windows.
EndProcedure
; --- Anwendungsbeispiel ---
Dir.s = PathRequester("Verzeichnis wählen", "C:\")
If IsEmptyDir(Dir)
MessageRequester("Ergebnis", "Das Verzeichnis " + Dir + " ist leer.")
Else
MessageRequester("Ergebnis", "Das Verzeichnis " + Dir + " ist nicht leer.")
EndIf
End
Laurin hat geschrieben:Ich denke, ich hab's ausreichend dokumentiert.
Code: Alles auswählen
streiche: If DirectoryEntryName(() <> ".."
setze:If DirectoryEntryName() <> ".."
Bei mir nicht.sen-me hat geschrieben:und was is wenn
/ordner/ordner2
is, wobei ordner2 leer ist
dann gibt er bei odner false aus :/
sen-me hat geschrieben:fazit ich müsste erst den ordner egal durchsuchen ob er leer is, und dann temp? (den ordner muss ich dan bei der suche halt ausschließen
Es könnte uns Außenstehenden vielleicht helfen, wenn Du uns erzählst, wonach Du wo suchst.Radio Eriwan hat geschrieben:Im Prinzip ja....
Argh, nee, sorry. Mit Letzteren kann ich nicht dienen.Andre hat geschrieben:@Laurin: das nenn ich mal CodeArchiv-gerechte Beiträge![]()
Das dürfte nicht sein. War das Verzeichnis wirklich leer?sen-me hat geschrieben:und was is wenn
/ordner/ordner2
is, wobei ordner2 leer ist
dann gibt er bei odner false aus :/