Festplatte auslesen
Übersicht

![]() |
BenibaerenstarkBetreff: Festplatte auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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+]
|
![]() |
BenibaerenstarkBetreff: Festplatte auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! ![]() 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 |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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
Gut erklärt!
If FileType(CurrentDir()+Bild$) = 2 Then ; 2. Möglichkeit, ordner gefunden 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+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group