Seite 1 von 1

Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:12
von frankmannb
Hallo an alle,

ich beginne zuri Zeit mich ein wenig in Pure-Basic einzuarbeiten und versuche gerade ein kleines Projekt zu realisieren.
Es soll ein Programm werden in dem man ein Verzeichnis wählt und aus diesem Verzeichnis werden alle Unterverzeichnisse und Dateien in eine CSV-Datei exportiert werden. Ich bin auch schon soweit das das Programm mir aus dem gewählten Pfad die Ordner und Dateien anzeigt aber eben nicht die Unterverzeichnisse. Von daher meine Frage an alle von euch. Kann mir jemand helfen wie ich dies entsprechend realisieren kann?

Vielen Dank Vorab
frankmannb

Hier der bisherige Code
/***********************************************************/

Code: Alles auswählen

  pfad.s = PathRequester("Bitte Pfad zum obersten Verzeichnis wählen","c:\")
  verzeichnis = ExamineDirectory(0,pfad,"*.*")  
  If verzeichnis 
     While NextDirectoryEntry(0)  
       verzeichnis_name.s = DirectoryEntryName(0)    
        Debug verzeichnis_name
     Wend  
     FinishDirectory(0)   
  EndIf
/*********************************************************/

Code-Tags ergänzt - Kaeru fecit
nächstes Mal bitte selber machen, den Button mit der Aufschrift "Code" benutzen.

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:20
von WPö
Hallo, Frankmannb!

Erstmal willkommen!
Versuche es mit der Rekursion, damit klappt es immer. Du muß allerdings Deine Routinen immer so schreiben, daß sie sich selbst aufrufen können, dann klappt es auch.

Gruß - WPö

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:21
von c4s
Der Trick ist, dass die Procedure sich selbst aufruft. (Ich muss zugeben, dass ich selbst wohl nie darauf gekommen wäre.)
Hier ein Thema aus dem englischen Forum, das genau dies behandelt: http://www.purebasic.fr/english/viewtop ... 12&t=29599

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:29
von frankmannb
WPo hat geschrieben:Hallo, Frankmannb!

Erstmal willkommen!
Versuche es mit der Rekursion, damit klappt es immer. Du muß allerdings Deine Routinen immer so schreiben, daß sie sich selbst aufrufen können, dann klappt es auch.

Gruß - WPö

HI,
Danke für die schnelle Antwort. Ja Rekursion ist richtig, habe aber dazu leider nichts in der Hilfe finden können. Hast du eventuell ein kleines Beispiel für mich.

danke frankmannb

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:32
von Pelagio
Hallo frankmannb,

auch von mir erst einmal herzlich Willkommen und gleich ein Beispiel, das zwar nicht genau deinem Projekt entspricht aber das willst Du sicherlich auch selber entwickeln, sondern ein Beispiel dafür ist wie die Rekursion funktioniert.

Code: Alles auswählen

Procedure SearchFile(Verzeichnis.s, Extension.s)   
   Protected vID.l, pFind.a = #True
   
   vID = ExamineDirectory(#PB_Any, Verzeichnis, "*.*")
   If vID
      While NextDirectoryEntry(vID)
         FileName$ = DirectoryEntryName(vID)
         If (Filename$<>".") And (Filename$<>"..") 
            Select DirectoryEntryType(vID)
               Case #PB_DirectoryEntry_Directory
                  SearchFile(Verzeichnis + FileName$, Extension) 
               Case #PB_DirectoryEntry_File      
                  If (GetExtensionPart(Filename$)=Extension)
                     If pFind: Debug #NULL$: Debug Verzeichnis: Debug RSet("-", Len(Verzeichnis) * 2, "-"): pFind = #Null: EndIf
                     Debug FileName$
                  EndIf
            EndSelect
         EndIf
      Wend
      FinishDirectory(vID)
   EndIf
EndProcedure

SearchFile("C:\", "log")

End 
:allright:

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 13:38
von Kiffi
Hallo frankmannb,

willkommen!

Für das Einlesen von Verzeichnissen eignet sich
die folgende Routine von Lebostein ganz gut.

http://www.purebasic.fr/german/viewtopi ... 742#p80742

Grüße ... Kiffi

Re: Einlesen von Verzeichnisinhalten

Verfasst: 21.02.2010 14:01
von frankmannb
@ alle
Vielen Lieben Dank für die schnelle und unbürokratische Hilfe. Hier bei euch im Forum fühlt man sich gleich super aufgehoben. Hätte ich nicht gedacht, das in so kurzer Zeit soviele mögliche Lösungsansätze gepostet werden.
Dafür an alle Vielen Dank

@kiffi
Dein Link hat natürlich genau ins schwarze getroffen. Ist genau das was ich brauche. Das ist super. Jetzt kann ich an meinen Projekt weiterarbeiten und wenn ich Probleme habe weiß ich ja an wen man sich hier im Forum wenden kann :-)

grüße aus Potsdam
frankmannb