Hey!
Ich habe hier nen rekursiven Aufruf meiner Procedure vom letzten mal...
Aber irgendwie geht die nicht ALLE Ordner einmal durch.Sondern fängt ab 2Ordnern einfach an, die Unterordner zu ignorieren...
newlist alledateien.s()
Procedure Fill_List(Directory.s)
Ordner = ExamineDirectory(#PB_Any,Directory,"*.*") ;Alle Dateien Durchsuchen
Repeat ;wird wiederholt, bis das Ende des Ordners erreicht ist
Test = NextDirectoryEntry() ;Test enspricht hiernach 1 oder 2-d.H., dass man daran erkent ob es ne Datei oder n Ordner ist.
If Test = 1
If UCase(GetExtensionPart(DirectoryEntryName())) = "MP3" Or UCase(GetExtensionPart(DirectoryEntryName())) = "WMA" ;nur zur Liste hinzufügen, wenn die Dtei eine mp3 ist.
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "MP3" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
EndIf
EndIf
If Test = 2 And DirectoryEntryName() <> "." And DirectoryEntryName() <> ".."
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "DIR" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
NewDirectory.s = Directory + DirectoryEntryName()
Fill_List(NewDirectory)
UseDirectory(Ordner)
EndIf
Until Test = 0
EndProcedure
Fill_List(C:\)
Foreach alledateien()
debug alledateien()
Next
Bin auf alle Lösungsansätze gespannt...
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
newlist alledateien.s()
Procedure Fill_List(Directory.s)
Ordner = ExamineDirectory(#PB_Any,Directory,"*.*") ;Alle Dateien Durchsuchen
Repeat ;wird wiederholt, bis das Ende des Ordners erreicht ist
Test = NextDirectoryEntry() ;Test enspricht hiernach 1 oder 2-d.H., dass man daran erkent ob es ne Datei oder n Ordner ist.
If Test = 1
If UCase(GetExtensionPart(DirectoryEntryName())) = "MP3" Or UCase(GetExtensionPart(DirectoryEntryName())) = "WMA" ;nur zur Liste hinzufügen, wenn die Dtei eine mp3 ist.
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "MP3" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
EndIf
EndIf
If Test = 2 And DirectoryEntryName() <> "." And DirectoryEntryName() <> ".."
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "DIR" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
NewDirectory.s = Directory + "\" + DirectoryEntryName() ; !!!!!!! Hier lag dein Fehler: Ein vergessener "\"!!!!!!
Fill_List(NewDirectory)
UseDirectory(Ordner)
EndIf
Until Test = 0
EndProcedure
Fill_List("C:\")
Foreach alledateien()
debug alledateien()
Next
Hey Danke!
Soweit gehts!
Aber hats du dir mal den Debug angeschaut?
Da sind z.T. Ordner\\Ordner1...
Also mit DOPPELBACKSLASH getrennt..woran liegt denn das?
Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Tafkadasom2k5 hat geschrieben:
Also mit DOPPELBACKSLASH getrennt..woran liegt denn das?
Gr33tz
Tafkadasom2k5
Laufwerke werden von Windows immer mit BackSlash zurückgegeben, wohingegen Unterordner immer ohne.
Mußte also noch ausfiltern!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Aber so gesehen, wennb ich ab dem LOKALEN Ordner D: suche
D:\Programme\Shareaza\Downloads
suche, dann ist doch kein extra Laufwerk drangebunden?Also ich habe nur n Ordner auf der Festplatte dursucht..
Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
>> D:\Programme\Shareaza\Downloads
Wird gefunden:
D:\
D:\Programme
D:\Programme\Shareaza
D:\Programme\Shareaza\Downloads
Durch anhängen von einem Backslash, sieht der erste Treffer so aus:
D:\\
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Aber WARUM geht das denn nicht ohne?Erst wenn ich diesen Backslah manuell dranhänge funktioniert der komplette rekursive Aufruf!
Das ist ja das Merkwürdige?
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
NewList alledateien.s()
Procedure Fill_List(Directory.s)
Ordner = ExamineDirectory(#PB_Any,Directory,"*.*") ;Alle Dateien Durchsuchen
Repeat ;wird wiederholt, bis das Ende des Ordners erreicht ist
Test = NextDirectoryEntry() ;Test enspricht hiernach 1 oder 2-d.H., dass man daran erkent ob es ne Datei oder n Ordner ist.
If Test = 1
If UCase(GetExtensionPart(DirectoryEntryName())) = "MP3" Or UCase(GetExtensionPart(DirectoryEntryName())) = "WMA" ;nur zur Liste hinzufügen, wenn die Dtei eine mp3 ist.
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "MP3" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
EndIf
EndIf
If Test = 2 And DirectoryEntryName() <> "." And DirectoryEntryName() <> ".."
AddElement(alledateien())
alledateien() = Str(Ordner) + ";" + "DIR" + ";" + Directory + "\" + DirectoryEntryName() + ";" + DirectoryEntryName() + ";" + Str(DirectoryEntrySize())
NewDirectory.s = Directory + "\" + DirectoryEntryName() ; !!!!!!! Hier lag dein Fehler: Ein vergessener "\"!!!!!!
NewDirectory = ReplaceString(NewDirectory, "\\", "\")
Fill_List(NewDirectory)
UseDirectory(Ordner)
EndIf
Until Test = 0
EndProcedure
Fill_List("C:\")
ForEach alledateien()
Debug alledateien()
Next
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
OK, soweit alles klar...
Aber kann es sein, dass er erst die Unterordner, und danach auch wieder die oberordner durchsucht?Oder bin ich ein wenig kirre..^^
Irgendwie sind Dateien in meiner Liste von meinem Windows ORdner vorhanden, auch wenn er nur ganz kurz läd.
Sehr misteriös
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!