Nach zurückkommen in den Ordner fängt alles neu an.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

etlam

Betreff: Nach zurückkommen in den Ordner fängt alles neu an.

BeitragSo, Jun 25, 2006 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich bin gerade dabei, ein kleines Programm zu machen, das einen Ordner, den man angibt auf doppelte Files überprüft.
Hier erstmal der Code:
Code: [AUSKLAPPEN]
dateinamen = WriteFile("dateinamen.dat")
dirr$ = CurrentDir$()
verzeichniss$ = Input("Verzeichnis (z.b:'C:\'):")
Print ("Gewaeltes Verzeichnis: '" + verzeichniss$ + "'")
Print ("Starte...")

ChangeDir(verzeichniss$)
If Not CurrentDir$()=verzeichniss$ Then RuntimeError("Directory does not exist..sorry")
Verz=ReadDir(CurrentDir$())
NextFile$(Verz)
NextFile$(Verz)
steckedrin% = 0
Repeat
   Datei$=NextFile$(Verz)
   If Datei$="" Then
       If steckedrin% > 0 Then
         CloseDir Verz
         ChangeDir("..")
         Verz=ReadDir(CurrentDir$())
         steckedrin% = steckedrin% - 1
      Else
         Exit
      EndIf
   EndIf
   If FileType(CurrentDir$()+Datei$) = 2 Then
      Print "Ordner:" + Datei$
      CloseDir Verz
      ChangeDir(Datei$)
      Print (CurrentDir$())
      Verz=ReadDir(CurrentDir$())
      steckedrin% = steckedrin% + 1
      NextFile$(Verz)
      NextFile$(Verz)
   Else
      Print "Datei:" + Datei$
      WriteLine(dateinamen,Datei$)
   End If
   Delay 500
Forever
CloseDir Verz
Print "FERTIG!!!"

Das soll jetzt einfach in jeden Ordner reingehen, und alle Dateien in "dateinamen.dat" schreiben. Nur leider funktioniert das nicht so ganz, wie ich es will, wenn Der Prüfordner so aussieht:
Ordner:
_____-lala.txt
_____-blub.dat
_____-Ordner x
__________-info.dat
_____-y.txt
Dann wird zuerst lala.txt, blub.dat, info.dat und dann wieder lala.txt angegeben, das ganze geht dann immer so weiter...
Hat jemand vielleicht eine Lösung, wie ich es machen könnte, dass nach info.dat dann y.txt kommt?

Vielen Dank für die Hilfe schonmal im voraus

etlam

PS: Tut mir leid für den Titel, mir ist kein besserer eingefallen.
 

antome

!!! gesperrt !!!

BeitragSo, Jun 25, 2006 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Tipp ist wenn ich das so geschwind durchlese:
Lies dein Stammverzeichnis in Types oder DIM-Variablen ein,
wenn du wieder ins Stammverzeichnis zurückgehst liest es sonst immer alles von vorne.

Keine Garantie, da ich es nicht getestet hab.
antome

PSY

BeitragSo, Jun 25, 2006 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
sowas schreit förmlich nach ner rekursiven funktion Very Happy


Code: [AUSKLAPPEN]
Function scandir(verzeichnis$)

dir=ReadDir(verzeichnis$)
datei$=NextFile$(dir)

While datei$="." Or datei$=".."
   datei$=NextFile$(dir)
wend

While Not datei$=""
   If FileType(verzeichnis$+datei$)=2
      scandir(verzeichnis$+datei$+"\")
        Else
             count=count+1
   endif   
   
   datei$=nextfile$(dir)

Wend

CloseDir (verzeichnis$)

End function



die funktion rufste dann z.b. so auf:

scandir("c:\windows\")

wichtig ist der letzte backslash...ohne den werden ansonsten verzeichnisse wie files behandelt.

mit
Code: [AUSKLAPPEN]

Print count


kannste die anzahl aller dateien anzeigen. vergiss dabei nicht, count als global zu definieren.

l8er,
psy

etlam

BeitragMo, Jun 26, 2006 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank,

etlam

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group