Ich verstehe das nicht !!!
Übersicht

![]() |
LifetecBetreff: Ich verstehe das nicht !!! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe dashier gefunden:
[url] https://www.blitzforum.de/foru...f25e963d5d [/url] Dann habe ich den Quelltext genommen und kopiert. Aber jetzt verstehe ich nicht was die beiden mit den Komentaren meinen. Muss das so aussehen ? Code: Function lese(dir$) Verz=ReadDir(dir$) Repeat Datei$=NextFile$(Verz) If Datei$="" Then Exit If FileType(thisFile$ = dir$ + "\"+Datei$ ) = 2 Then If Datei$ <> "." And Datei$ <>".." Then DebugLog "Ordner:" + Datei$ lese(thisFile$ = dir$ + "\"+Datei$ ) EndIf Else If Datei$<>".." Then Print "Datei:" + Datei$ EndIf End If Forever Print "-Ende-" Print "" CloseDir Verz End Function lese("C:\") Stop Es funkuniert aber nicht was mache ich den falsch ?? |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir funktioniert dein Code, wobei ich sagen muss, dass ich kein BlitzPlus habe. Aber eigentlich sollte das kein Unterschied machen.
grtz robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
DATISBetreff: Also... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie bemerkst du denn, dass es nicht funktioniert ![]() ![]() ![]() ![]() ![]() Wenn du kein "Graphics" benutzt, wird der Desktopbuffer verwendet, wenn ich mich nicht irre ![]() |
||
Frauen und Technik?
Männer und BHs? Beides möglich. |
![]() |
Lifetec |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code funkuniert auch aber er soll nicht nur die Ordner von C:\ angeben sondern auch die Unterordner und von den Wieder Die Dateien und Unterordnern.
Wie mach ich das ? |
||
![]() |
DATIS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das musst du in einer Repeatschleife machen.
Gibt es da nirgendwo Beispiele? Also du überprüfst immer weiter (mit NextFile oderso und mit Filetype), ob die Datei gerade ein Ordner ist oder eine datei. Und wenn es ein Ordner ist (FileType=2), dann benutze einfach ChangeDir (richtig?!?) um in den Ordner zu wechseln. |
||
Frauen und Technik?
Männer und BHs? Beides möglich. |
![]() |
Lifetec |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal was neues Probiert:
Code: OrdnerNr = ReadDir("C:") pfad$ = "C:" Repeat A$ = NextFile(OrdnerNR) If A$ <> "" Then If FileType(pfad$ + "\" + A$) = 1 Then Print "Datei: " + A$ EndIf If FileType(pfad$ + "\" + A$) = 2 Then Print "Ordner: " + A$ OrdnerNr2 = ReadDir(pfad$ + "\" + A$) Repeat B$ = NextFile(OrdnerNr2) If B$ <> "" Then If FileType(pfad$ + "\" + A$ +"\" + B$) = 1 Then Print "Datei2: " + B$ EndIf If FileType(pfad$ + "\" + A$ +"\" + B$) = 2 Then Print "Ordner2: " + B$ OrdnerNr3 = ReadDir(pfad$ + "\" + A$ + "\" + B$); Repeat; C$ = NextFile(OrdnerNr3) If C$ <> "" Then If FileType(pfad$ + "\" + A$ +"\" + B$) = 1 Then Print "Datei3: " + C$ EndIf If FileType(pfad$ + "\" + A$ +"\" + B$) = 2 Then Print "Ordner3: " + C$ EndIf OrdnerNr4 = ReadDir(pfad$ + "\" + A$ + "\" + B$ + "\" + C$) EndIf Until C$ = "" EndIf EndIf Until B$ = "" EndIf EndIf Until A$ = "" WaitKey Aber es funkuniert nicht richtig weil er nur 3 nterordner öffnet. Und es ist ziemlich umständlich. Weiß jemand eine Bessere Lösung ?? Es wäre nett wenn ihr mir einen Quellcode geben würdet. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das geht sehr viel Einfacher und ohne eine Million verschachtelte Schleifen.
- Wähle einen Ordner - Lies alle Unterordner und Dateien darin aus - Rufe rekursiv die Funktion für jeden Unterordner auf Wenn man das auf Laufwerkebene startet hat man theoretisch alles Wie gesagt, das Zauberwort ist rekursiver Aufruf. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Lifetec |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: Das geht sehr viel Einfacher und ohne eine Million verschachtelte Schleifen.
- Wähle einen Ordner - Lies alle Unterordner und Dateien darin aus - Rufe rekursiv die Funktion für jeden Unterordner auf Wenn man das auf Laufwerkebene startet hat man theoretisch alles Wie gesagt, das Zauberwort ist rekursiver Aufruf. Was ist denn rekursiv. Ich verstehe das nicht kann du mir das an einen Bsp zeigen ???? |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
PseudoCode:
Code: Function Auslesen(Verzeichnis$) while DateieninVerzeichnis$ NaechsteDatei=Dateiauslesen(Verzeichnis) Wenn NaechsteDatei=EinOrdner Dann Auslesen(NaechsteDatei) endeWenn wend end function |
||
Gruss Der Typ.
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das berühmteste Beispiel ist die Berechnung von Fakultät:
10! = 10*9*8*7*6*..*2*1 In Programmcode schreibt man die Fakultät dann Rekursiv da sie wie man oben sieht einen rekursiven Aufbau hat (sie ruft sich immer selbst wieder auf): Code: Function Fakultaet%(wert%) if wert < 1 return 1 return wert * Fakultaet(wert-1) End Function |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Lifetec |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ja toll aber ich weiß trotzdem nicht wie ich das einfügen soll.
So das meine ganze Festplatte ausgegeben wird. Könnte mir jemand einen Quellcode geben wo das gemacht wird. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Könnte ich, ja.
Werde ich aber nicht, da dich das nicht weiter bringt beim lernen. Und ich / wir haben nicht vor dir alle Probleme zu lösen, da Programmieren nunmal in erster Linie sehr viel nachdenken ist. Und Argumente wie "ich bin neu" oder "ich habe doch keine Ahnung" gelten dabei nicht. Denn wenn dem so ist, beschäftige dich erst mit etwas einfacherem oder suche dir ein Hobby wo man nicht soviel und so strukturiert nachdenken muss und nicht so stark analytisch begabt sein muss wie beim Programmieren, sorry ... Was du machen willst mit deiner funkt ist das gleiche wie bei der Fakultät, nur das du nichts ausrechnest damit, sondern Daten in Verzeichnissen und ihren Unterverzeichnissen sammelst (etwas anderes als verzeichnis und unterverzeichnis existiert nicht worin du suchen könntest) Hier Mal eine Idee: (nur pseudo code damit du weisst was überhaupt zu machen ist prinzipiell bei einer rekursiven Strukturierung des Problems) Code: readDirectory( lese laufwerke aus ) ; das heisst, für alle vorhandenen Laufwerke aufrufen Function readDirectory(dir%) ; Lese alle Unterverzeichnisse ; und rufe für jedes Unterverzeichnis readDirectory auf ; lese alle Dateien ; gib diese Daten in einer nutzbaren Form zurück ; hierfür eigenet sich wohl eine Bank am besten, da sie dynamische Grösse hat ; Alternativ kann man auch direkt ein TreeView Gadget damit füttern End Function |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
guckst du hier: https://www.blitzforum.de/foru...ht=#195750 scroll runter bis zu meinem beitrag ist allerdings in bb3d l8er, psy |
||
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Code: Graphics 1000,700,0,2 Function lese(dir$) If Right$( dir$,1)<>"\" Then Dir$=Dir$+"\" Verz=ReadDir(dir$) Datei$=NextFile$(Verz) While Datei$<>"" If FileType(dir$+Datei$ ) = 2 Then If Datei$ <> "." And Datei$ <>".." Then Print "Ordner:" +Dir$+ Datei$ lese(Dir$+Datei$ ) EndIf Else Print "Datei: " +Dir$+ Datei$ End If Datei$=NextFile$(Verz) Wend CloseDir Verz End Function lese("C:\") Stop Code: Function lese(dir$) Verz=ReadDir(dir$) Repeat Datei$=NextFile$(Verz) If Datei$="" Then Exit If FileType(dir$ + "\"+Datei$ ) = 2 Then If Datei$ <> "." And Datei$ <>".." Then DebugLog "Ordner:" + Datei$ lese(dir$ + "\"+Datei$ ) EndIf Else Print "Datei:" + Datei$ End If Forever Print "-Ende-" Print "" CloseDir Verz End Function Graphics 800,600,0,0 lese("C:\") Stop Code: Type DateiListeTyp Field Ordner$ Field Dateiname$ Field Erweiterung$ End Type Global DateiListe.DateiListeTyp SucheDateien "C:\","BMP|PNG|GIF|" Function SucheDateien(Ordner$,Erweiterung$) If Len(Erweiterung$)>0 Then If Right$(Erweiterung$,1)<>"|" Then Erweiterung$=Erweiterung$+"|" 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 MfG Florian |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group