Festplatte auslesen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Benibaerenstark

Betreff: Festplatte auslesen

BeitragSo, Dez 26, 2004 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich möchte ein Programm programmieren, welches mir eine Liste aller Dateien im Laufwerk C:\ macht.

Wenn ich etwas installiert habe, werde ich eine Neue Liste machen, und das Prog soll mir alle neuen Dateien anzeigen, sodass ich sie bei einer Deinstallation ALLE wieder entfernen kann. (Microsoft Windows scheint dazu nicht fähig zu sein)

Nun zum Problem:

Folgender Code funktioniert nicht. d.h. er öffnet/wechselt nicht in den gefundenen ordner! wo ist der Fehler? Ihr könnt den code rauskopieren, er sollte lauffähig sein...

Code: [AUSKLAPPEN]

ChangeDir "C:\" ;ins C, zum Anfangen
Global Verz=ReadDir (CurrentDir ())


Repeat   

Datei$=NextFile$(Verz)          ;1.File im aktuellen Verzeichnis auslesen


If FileType(CurrentDir ()+Datei$) = 2 ; test ob es ein Ordner ist
 
  CloseDir Verz         ; Aktuelles Verzeichnis schliessen

  ChangeDir CurrentDir()+Datei     ;in den ausgelesenen Ordner wechseln , dies scheint nicht zu klappen!
  Verz=ReadDir (CurrentDir ()) ; Den aktuellen Ordner als aktuelles Verzeichis angeben
Print currentDir()
EndIf


If FileType(CurrentDir ()+Datei$) =1 ;test ob datei
i=i+1                              ;zählen
Print i+" "+ CurrentDir() + Datei$ ;Dateinr, Pfad, und Dateiname ducken
End If


Until  KeyDown (1)


vielen dank für eure hilfe

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Dez 26, 2004 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type Daten
Field Name$, Wo$
End Type

DirScan("c:\")
WaitMouse
;------------------------------------------------------------------------------
Function DirScan(Pfad$);liest  alles aus, inclusive Unterordner
   olddir$ = CurrentDir()
   ChangeDir (Pfad$)
   
   Ordner = ReadDir (CurrentDir())
   
   Repeat
      Bild$ = NextFile (Ordner)
      If Bild$  = "" Then Exit
         If FileType(CurrentDir()+Bild$) = 2 Then
         If Bild$  <> "." And Bild$  <> ".." Then
            DirScan(CurrentDir()+Bild$) ;<<<<<< Rekursiv
         End If
      Else
      ;------------------------------------------------------------------
      ; was suchen wir den......
        ; If Upper$ (Right$(bild$,3)) = "JPG"  Then
            Datei.Daten =   New Daten
            Datei\Name$ =   bild$
            Datei\Wo$   =   CurrentDir()
            Print  Datei\Wo$ +   Datei\Name$
      ;Daten werden im Debugfenster ausgegeben
      ;------------------------------------------------------------------
        ; End If
      End If
   Forever
   CloseDir (Ordner)
   ChangeDir (olddir$)
End Function

so gehts auf jeden fall!
[BB2D | BB3D | BB+]

Benibaerenstark

Betreff: Festplatte auslesen

BeitragSo, Dez 26, 2004 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
erstmals vielen Dank für deinen Code! er funktioniert prima!

da ich aber durch blosses code-abschreiben nie etwas lerne, versuche ich deinen Code zu verstehen...ich kommentiere ihn und wäre dir sehr dankbar, wenn du meine kommentare kurz lesen und berichtigen würdest! Smile

Code: [AUSKLAPPEN]

Type Daten                          ;Type-Sorte Daten Definieren
Field Name$, Wo$               ; Type-Kontainervariablen Name/Ort definieren
End Type

DirScan("c:\")           ;Hauptprog ;-), funktionsaufruf
WaitMouse
;------------------------------------------------------------------------------
Function DirScan(Pfad$);liest  alles aus, inclusive Unterordner
   olddir$ = CurrentDir()       ;aktuellen Ordner speichern ->wozu?
   ChangeDir (Pfad$)        ;in den Gewünschten Ordner wechseln
   
   Ordner = ReadDir (CurrentDir())  ; gewünschtes Verzeichnis öffnen
   
   Repeat
      Bild$ = NextFile (Ordner)   ; inhalt auslesen und in Bild speichern (warum bild?)
      If Bild$  = "" Then Exit  ;1.möglichkeit, verzeichnis leer->funktionsende


         If FileType(CurrentDir()+Bild$) = 2 Then ; 2. Möglichkeit, ordner gefunden
         If Bild$  <> "." And Bild$  <> ".." Then  ; was bedeutet diese Zeile?
            DirScan(CurrentDir()+Bild$) ;<<<<<< Rekursiv ;wenn obige bedingung stimmt, dann den gefundenen Ordner öffnen und von vorne anfangen?
         End If ; was passiert wenn obige bedingung nicht erfüllt wurde?
     
Else ;3.Möglichkeit, es wurde eine Datei gefunden
      ;------------------------------------------------------------------
      ; was suchen wir den......
        ; If Upper$ (Right$(bild$,3)) = "JPG"  Then ;was ist das für eine bedingung?
            Datei.Daten =   New Daten ; neuen Type-eintrag erstellen
            Datei\Name$ =   bild$  ;type-variable name setzen
            Datei\Wo$   =   CurrentDir()  ;type-variable ort setzen
            Print  Datei\Wo$ +   Datei\Name$  ;Typeeintrag ausgeben
      ;Daten werden im Debugfenster ausgegeben
      ;------------------------------------------------------------------
        ; End If
      End If
   Forever
   CloseDir (Ordner)
   ChangeDir (olddir$)
End Function



warum verwendest du types, würde es ohne nicht auch funktionieren? was ist der zweck/die aufgabe der types?

werden auch aktive dateien ausgelesen?


mfg

beni

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Dez 26, 2004 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
da ich aber durch blosses code-abschreiben nie etwas lerne, versuche ich deinen Code zu verstehen

Wenn alle so wären !!

Das war mal eine function um alle jpg im Ordner auszulesen, habe deswegen die if rausgenommen um alle Dateien zu speichern!

Code: [AUSKLAPPEN]
olddir$ = CurrentDir()       ;aktuellen Ordner speichern ->wozu?

1.das ist notwendig, da dies eine rekursive Function ist
2. wenn ich ein Spiel progge kann ich nicht mit festen Pfaden arbeiten, da es ja nicht immer an der gleichen Stelle installiert wird! Obwohl das beim Starten auch gespeichert werden kann!
Code: [AUSKLAPPEN]
  Bild$ = NextFile (Ordner)   ; inhalt auslesen und in Bild speichern (warum bild?)
Warum Bild? war mir gerde so nach... weil ich mit der Function Bilder eingelesen habe, kannste natürlich auch dat oder xx oder wasweißich schreiben!


Code: [AUSKLAPPEN]
If Bild$  = "" Then Exit  ;1.möglichkeit, verzeichnis leer->funktionsende
If FileType(CurrentDir()+Bild$) = 2 Then ; 2. Möglichkeit, ordner gefunden
Gut erklärt!

Code: [AUSKLAPPEN]
If Bild$  <> "." And Bild$  <> ".." Then  ; was bedeutet diese Zeile?
"." und ".." ist noch so ein überbleibsel der dos Zeiten, diese sind nicht relevant für diese Function und werden umgangen bzw. übersprungen ! Der Ordner ".." enthält zum beispiel den übergeordneten Ordner !
Code: [AUSKLAPPEN]
; was passiert wenn obige bedingung nicht erfüllt wurde?

wie schon beschrieben .... die Ordner "." und ".." werden nicht ausgelesen!

Zu den types
Zum anzeigen reicht der print befehl ja aus, aber die Werte sollen doch gespeichert werden, um diese in eine Datei zu schreiben oder so...
Types sind dafür am besten geeignet da ich ja nicht weiß wie viele es sind , denn Arrays kann ich nicht ohne Datenverlust redimmen !

Auch aktive werden angezeigt!
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group