Ordner und Verzeichnisse auslesen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Tritium

Betreff: Ordner und Verzeichnisse auslesen

BeitragDo, Mai 15, 2008 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich für mein aktuelles Projekt eine Funktion brauchte, die für mich alle Ordner ausliest, habe ich mir jetzt eine geschrieben (der Satz ist irgendwie sinnlos, aber mir ist keine bessere Einleitung eingefallen Wink ):

Code: [AUSKLAPPEN]
Graphics 800,600
Color 0,255,0
ordner_auslesen()
WaitKey
End

Function ordner_auslesen(ebene=0,dir$="A:\")
   If Right(dir,1) <> "\" Then dir = dir + "\"
   
   Repeat
      rdir = ReadDir(dir)
      
      If rdir > 0 Then
         Print dir         ;Ordner-Node
         
         Repeat
            file$ = NextFile(rdir)
            
            If file <> "" And file <> "." And file <> ".." Then
               If FileType(dir+file) = 1 Then
                  Print dir+file         ;Datei-Node
               ElseIf FileType(dir+file) = 2 Then
                  ordner_auslesen(ebene+1,dir+file)
               EndIf
            EndIf
         Until file = ""
      ElseIf ebene = 0 Then
         If Not Left(CurrentDir(),1) = "Z" Then
            dir = Chr(Asc(Left(dir,1))+1) + ":\"
         Else
            Exit
         EndIf
      EndIf
   Until file = "" And rdir > 0
End Function


Der Code vor der Funktion ist logischerweise dazu da, diese aufzurufen, damit Ihr das sofort ausprobieren könnt. Die Verwendung der Funktion ist sehr einfach: ebene gibt die Rekursionstiefe der Funktion an. Standard-Wert ist 0, mit anderen Werten lassen sich aber ganz nützliche Effekte erzielen.

dir$ gibt den Startordner an, von dem aus die Funktion alle Dateien, Ordner und Unterordner (auch wieder mit Dateien) ausliest.

Die zwei kommentierten Stellen im Code sind die Stellen, an denen das Programm einen Ordner oder eine Datei "erkannt" hat. Ich hab da einfach mal Print hingeschrieben, damit man was sieht, das kann natürlich gegen was anderes getauscht werden.

The_Nici

BeitragDo, Mai 15, 2008 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nichts aussergewöhnliches.
Gibts sogar in der OH Beispiel dazu.
 

Tritium

BeitragFr, Mai 16, 2008 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß, dass das nichts außergewöhnliches ist, viele scheinen aber damit Probleme zu haben. Deswegen hab ich das hier gepostet.

tft

BeitragMo, Aug 25, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ..

und es ist rekursiv ....... cool

gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

DAK

BeitragMo, Aug 25, 2008 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
in die reihe (einfach/nichts bemerkenswertes und hat mit ordnern zu tun) passt auch das hier von mir:

Code: [AUSKLAPPEN]
Function killdir(dir$)
   Local rd = ReadDir(dir$)
   NextFile(rd)
   Local nxf$ = NextFile(rd)
   While nxf$ <> ""
      nxf$ = NextFile(rd)
      If nxf$ <> "" Then
         If FileType(dir$+"\"+nxf$) = 1 Then
            DeleteFile(dir$+"\"+nxf$)
         ElseIf FileType(dir$+"\"+nxf$) = 2 Then
            killdir(dir$+"\"+nxf$)
         EndIf
      EndIf
   Wend
   DeleteDir(dir$)
End Function


diese funktion löscht einen ordner mit allen unterordnern und dateien. damit ham auch ein paar leute schon schwierigkeiten gehabt.
Gewinner der 6. und der 68. BlitzCodeCompo

ozzi789

BeitragMi, Aug 27, 2008 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich find es ist relativ schnell, is sicher nützlich Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group