prüfen ob Ordner leer ist
prüfen ob Ordner leer ist
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
Re: prüfen ob Ordner leer ist
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
bis denne...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Ich denke, ich hab's ausreichend dokumentiert.

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
Zuletzt geändert von Laurin am 19.12.2005 03:52, insgesamt 1-mal geändert.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Laurin hat geschrieben:Ich denke, ich hab's ausreichend dokumentiert.
Code: Alles auswählen
streiche: If DirectoryEntryName(() <> ".."
setze:If DirectoryEntryName() <> ".."

SCNR...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
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 :/
Ich hab den Code gleich veriennahmt und c:\temp\egal eingerichtet, wobei in temp nur egal ist und egal leer ist.
Ergebnis: "Das Verzeichnis C:\temp\ ist nicht leer".
Und das stimmt

scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
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....
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Argh, nee, sorry. Mit Letzteren kann ich nicht dienen.Andre hat geschrieben:@Laurin: das nenn ich mal CodeArchiv-gerechte Beiträge![]()
Es freut mich aber trotzdem, dass dir das so gefällt.
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 :/
@Scholly:
Hab's mal fix gändert (hoffentlich sieht's keiner)

Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.