Alle Dateien in einem Verzeichnis auslesen
Übersicht

![]() |
kogBetreff: Alle Dateien in einem Verzeichnis auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi wieder einmal, ich habe schon die Suche benutzt doch habe kein anständiges Script gefunden, meine Idee ist, wenn man einen Ordner angibt, das script daraus Alle dateien angibt auch die in den Subordner, doch irgendwie Funktioniert mein Script nicht:
BlitzBasic: [AUSKLAPPEN] Function getfiles(dir$) Ich habe den Debugger an, doch trotzdem kommt nur eine Fehlermeldung worauf nichts steht, achja ich arbeite mit BlitzPlus mfg k.o.g. |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie da kommt nur eine leere Fehlermeldung in der du nur OK drücken kannst? Ohne Text? | ||
Gruss Der Typ.
User posted image |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
es kommt das normale Error Fenster, auch wenn ich den debugger anhabe:
![]() |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich könnte mir da ein Stack bzw. Buffer Overflow vorstellen, weil du vergessen hast, dass beim auslesen von Verzeichnissen auch "." und ".." ausgelesen werden. Dadruch ruft sich die Funktion immer und immer wieder selbst auf.
MfG D2006 |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe es jetzt so gemacht:
BlitzBasic: [AUSKLAPPEN] Function getfiles(dir$) Doch es geht immernochnicht |
||
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
In einem meiner aktuellen Projekte verwende ich auch so eine Routine, ich hab für dich mal das wesentliche rausgeschrieben:
Code: [AUSKLAPPEN] Type file Field ftype% Field location$ Field name$ ; Field End Type dir("\Neuer Ordner (2)\") For f.file=each file If f\ftype%=2 Then Print "Ordner" If f\ftype%=1 Then Print "Datei" Print f\location$ Print f\name$ Next WaitKey() Function Dir(path$) path_id=ReadDir("."+path$) ChangeDir("."+path$) tmp1=NextFile$(path_id) tmp2=NextFile$(path_id) Repeat f.file = New file f\name$=NextFile$(path_id) f\location=currentdir() f\ftype=FileType(f\location+f\name$) If f\name$="" Then Delete f : Exit Forever CloseDir path_id For f.file = Each file If f\ftype = 2 Then path2$=ReadDir(f\location+f\name) Changedir(f\location+f\name) tmp1=NextFile$(path2) tmp2=NextFile$(path2) Repeat tmp$=NextFile$(path2) If tmp$="" Then Exit f2.file = New file f2\name$=tmp$ f2\location=currentdir() f2\ftype=FileType(f2\location+f2\name$) Forever CloseDir path2$ EndIf Next End Function |
||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm bei mir funktioniert dein Script nicht | ||
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type DateiListeTyp Field Ordner$ Field Dateiname$ Field Erweiterung$ End Type Const COrdner=2 Const CDatei=1 Global DateiListe.DateiListeTyp SucheDateien "C:\","txt|" Function SucheDateien(Ordner$,Erweiterung$) If Len(Erweiterung$)>0 Then If Right$(Erweiterung$,1)<>"|" Then Erweiterung$=Erweiterung$+1 End If End If If Right$(Ordner$,1)<>"\" Then Ordner$=Ordner$+"\" End If LangErweiterung=Len(Erweiterung$) OrdnerNr=ReadDir(Ordner$) If OrdnerNr=0 Then Return Ordner_Konnte_Nicht_auslesen_Werden Datei$=NextFile$(OrdnerNr) While Datei$<>"" Select FileType((Ordner$+Datei$)) Case COrdner If Datei$<>"." And Datei$<>".." Then SucheDateien Ordner$+Datei$,Erweiterung$ End If Case CDatei DateiErweiterung$=Mid$(Datei$,Instr(Datei$+".",".")+1) DateiName$=Mid$(Datei$,1,Instr(Datei$+".",".")-1) If LangErweiterung>0 Then ErweiterungStimmt=False For PosErweiterung=1 To LangErweiterung Select Mid$(Erweiterung$,PosErweiterung,1) Case "|" If Upper$(TestErweiterung$)=Upper$(DateiErweiterung$) Then ErweiterungStimmt=True Exit End If TestErweiterung$="" Default TestErweiterung$=TestErweiterung$+Mid$(Erweiterung$,PosErweiterung,1) End Select Next TestErweiterung$="" If TestErweiterung$<>"" And Upper$(TestErweiterung$)=Upper$(DateiErweiterung$) Then ErweiterungStimmt=True End If End If If ErweiterungStimmt=True Or LangErweiterung=0 Then DateiListe= New DateiListeTyp DateiListe\Dateiname$=Dateiname$ DateiListe\Ordner$=Ordner$ DateiListe\Erweiterung$=DateiErweiterung$ End If End Select Datei$=NextFile$(OrdnerNr) Wend End Function Function Upper$(S$) Slen=Len(S) If Slen>0 Then For P=1 To Slen ASCII=Asc(Mid$(S$,P,1)) If Ascii>96 And Ascii<123 Then Ascii=Ascii-32 ElseIf Ascii=252 Then ;ü Ascii=220 ElseIf Ascii=228 Then ;ä Ascii=196 ElseIf Ascii=246 Then ;ö Ascii=214 End If R$=R$+Chr$(ASCII) Next Return R$ End If End Function Florian |
||
Das große BlitzBasic Community Tutorial
Stackmaschine 2.0 |
- Zuletzt bearbeitet von Florian am So, Mai 14, 2006 22:08, insgesamt einmal bearbeitet
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gibt es kein einfaches Script? | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deins ist schon relativ gut, allerdings ist da ein kleiner Denkfehler drin
das Problem liegt an deiner Schleife repeat ... until Text="" wenn hier test$ = NextFile (verz) test = "" wird trotzdem der Code weiter ausgefüht, aber das darf er nicht. Das hier sollte funktionieren! Code: [AUSKLAPPEN] Function getfiles(dir$)
verz=ReadDir(dir$) Repeat test$=NextFile$(verz) If Test$="" then exit If FileType(dir$+"\"+test$)=2 Then getfiles(dir$+"\"+test$) ElseIf FileType(dir$+"\"+test$)=1 Then If mode=0 Then If Right(test$, 4)=".bmp" Or Right(test$, 4)=".jpg" Then AddGadgetItem list,dir$+"\"+test$ EndIf ElseIf mode=1 Then If Right(test$, 4)=".wav" Then AddGadgetItem list,dir$+"\"+test$ EndIf EndIf EndIf forever CloseDir(verz) End Function |
||
[BB2D | BB3D | BB+]
|
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen dank, dank deiner Hilfe funktioniert es jetzt:
BlitzBasic: [AUSKLAPPEN] Function getfiles(dir$) Gleich für alle ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group