Dateien nach Endung suchen Funktion

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Garfield

Betreff: Dateien nach Endung suchen Funktion

BeitragDi, Jun 01, 2004 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
auf den Gefahr eines Doppelposts (die Suchfunktion funktioniert nicht selektiv genug):

hier ist eine Funktion mit der man nach Dateien, Endungen suchen oder einfach auch alle Directories auslesen kann:

Bitte ausgiebig testen und Fehler melden Danke

Der erste Code ist für das Hauptprogramm mit den notwendigen Globals

aufgerufen wird mit ScanAll(Pfad$)




BlitzBasic: [AUSKLAPPEN]
; Directories auslesen von "Garfield" Winfried Rothenberg 



Type Directories
Field Pfad$
End Type


Global TA

Global Prog_Directory$ = CurrentDir()

Global TEstFile = WriteFile(Prog_Directory$+"Testfile.txt")


CurrentPfad$= RequestDir ("bitte Laufwerk oder Verzeichnis wählen")
If Right$(CurrentPfad$,1)<> "\" Then Currentpfad = currentpfad + "\"



TA = 0
ScanAll(CurrentPfad$)


CloseFile Testfile


Notify TA +" Dateien gefunden"

End




Das ist die eigentliche Funktion

statt WriteLine in eine Datei kann man in ein Array schreiben oder Types erzeugen, ganz nach belieben


BlitzBasic: [AUSKLAPPEN]

Function ScanAll(CurrentPfad$)

CurrDir= ReadDir(CurrentPfad$)

DirAuslesen(CurrDir,CurrentPfad$)

CloseDir CurrDir

For Dir.Directories = Each Directories

CurrentPfad =Dir\Pfad$
CurrDir= ReadDir(CurrentPfad)
DirAuslesen(CurrDir,CurrentPfad$)
CloseDir CurrDir

Delete Dir

Next

End Function


Function DirAuslesen(CurrDir,CurrentPfad$)

While MoreFiles(CurrDir)
FFile$ = NextFile(CurrDir)
CurrFile$ = currentPfad+file$

If FileType(CurrFile$) = 2
If file = "." Or File = ".."
Else
Ordner = Ordner +1
Dir.Directories = New Directories
Dir\Pfad = currfile$+"\"
End If

End If

If FileType(CurrFile$) = 1
Anzahl = Anzahl +1
Extension$ = Lower$ (Right$(File$,3))
Select Extension
Case "wav" : EintragWAV(CurrFile$,File)
Case "mp3" : EintragMP3(CurrFile$,File)
End Select
End If
SetStatusText main_window,TA +" Ordner= "+Ordner


Wend

End Function

Function Eintrag(Pfad$,File$)

Ta = Ta+1

WriteLine (TestFile,TA + " -> "+Pfad$)


End Function





BlitzPlus|BMax|BMax-GUI -- Sony VAIO Win7 * MacBookPro Sierra
  • Zuletzt bearbeitet von Garfield am Sa, Jun 05, 2004 14:15, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jun 01, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
da hab ich mir mal selbst eine verfasst, durchsucht die Unterverzeichnisse gleich mit und findet alle JPG Bilder
Läßt sich leicht anpassen
BlitzBasic: [AUSKLAPPEN]
Type Daten 
Field Name$, Wo$
End Type
;DirScan(Pfad$,Endung(3Stellen))
DirScan("c:\Eigene Dateien",".bb")
WaitMouse
End
;------------------------------------------------------------------------------
Function DirScan(Pfad$,Typ$);liest alle Einträge des Typs aus, inclusive Unterordner
DebugLog "Functionsaufruf DirScan ( "+Chr(34)+Pfad$+Chr(34)+" , "+Chr(34)+Typ$+Chr(34)+ " )"
olddir$ = CurrentDir()
ChangeDir (Pfad$)
Ordner = ReadDir (CurrentDir())

Repeat
Eintrag$ = NextFile (Ordner)
If Eintrag$ = "" Then Exit
If FileType(CurrentDir()+Eintrag$) = 2 Then
If Eintrag$ <> "." And Eintrag$ <> ".." Then
; Ordner gefunden
DirScan(CurrentDir()+Eintrag$,Typ$) ;<<<<<< Rekursiv
End If
Else
;------------------------------------------------------------------
; was suchen wir den......
If Upper$ (Right$(Eintrag$,3)) = Upper$(Typ$) Then
Datei.Daten = New Daten
Datei\Name$ = Eintrag$
Datei\Wo$ = CurrentDir()
DebugLog Datei\Wo$ + Datei\Name$
;Daten werden im Debugfenster ausgegeben
;------------------------------------------------------------------
End If
End If
Forever
CloseDir (Ordner)
ChangeDir (olddir$)
End Function

Beim änderen des Functionsaufrufs das rekursive mit ändern sonst gibt es Fehler!!!
[BB2D | BB3D | BB+]

Garfield

BeitragSa, Jun 05, 2004 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe den Code nochmal verbessert, da er doch Fehlerbehaftet war.

Neu hinzugekommen ist folgende Zeile:

BlitzBasic: [AUSKLAPPEN]
If Right$(CurrentPfad$,1)<> "\" Then Currentpfad = currentpfad + "\" 


bei Request eines Pfades wird nur bei einem "Root" automatisch eine "\" mit angehängt, also z.B. nur bei E:\. Wählt man einen Unterordner an, fehlt das "\"

Außerdem hatte ich einen Fehler mit der Variablen "CurrentPfad$", diese wurde nicht korrekt übergeben, es ist "nur" eine lokale Variable

Ansonsten konnte ich keinen weiteren Fehler entdecken.
BlitzPlus|BMax|BMax-GUI -- Sony VAIO Win7 * MacBookPro Sierra

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group