prüfen ob Ordner leer ist

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

prüfen ob Ordner leer ist

Beitrag von sen-me »

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
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Re: prüfen ob Ordner leer ist

Beitrag von scholly »

sen-me hat geschrieben:wie kann ich prüfen ob ein ordner leer ist?
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
Geht das damit nicht ?

bis denne...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

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.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

und was is wenn
/ordner/ordner2
is, wobei ordner2 leer ist

dann gibt er bei odner false aus :/
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Laurin hat geschrieben:Ich denke, ich hab's ausreichend dokumentiert. ;)

Code: Alles auswählen

streiche: If DirectoryEntryName(() <> ".." 
setze:If DirectoryEntryName() <> ".." 
:mrgreen:
SCNR...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@Laurin: das nenn ich mal CodeArchiv-gerechte Beiträge :allright:

(auch wenn jetzt noch OS + Demo-Kompatibilität dazugehört :wink: )
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

sen-me hat geschrieben:und was is wenn
/ordner/ordner2
is, wobei ordner2 leer ist

dann gibt er bei odner false aus :/
Bei mir nicht.
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)
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

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
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

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
Radio Eriwan hat geschrieben:Im Prinzip ja....
Es könnte uns Außenstehenden vielleicht helfen, wenn Du uns erzählst, wonach Du wo suchst.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Andre hat geschrieben:@Laurin: das nenn ich mal CodeArchiv-gerechte Beiträge :allright:
Argh, nee, sorry. Mit Letzteren kann ich nicht dienen.
Es freut mich aber trotzdem, dass dir das so gefällt.
sen-me hat geschrieben:und was is wenn
/ordner/ordner2
is, wobei ordner2 leer ist

dann gibt er bei odner false aus :/
Das dürfte nicht sein. War das Verzeichnis wirklich leer?

@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.
Antworten