Ein Verzeichnis durchsuchen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ananas

Betreff: Ein Verzeichnis durchsuchen

BeitragFr, Sep 09, 2011 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey
Ich versuche gerade ein Programm zu schreiben, das alle Dateien und Ordner in einem gewünschten Verzeichnis aufzeigt... Sollte eigentlich kinderleicht sein, es klappt auch halbwegs, ich habe nur 2 Probleme:

1. - Mein Programm findet immer 2 Ordner, die es gar nicht gibt. Der eine heisst "." und der andere "..". Warum? Sucht mein Programm so gut, dass es sogar Ordner findet die es gar nicht gibt? o.O

2. - Das Programm kann oft nicht zwischen Ordner und Datei unterscheiden - das heisst es erkennt manchmal eine Datei als Ordner oder umgekehrt.

Hier mein Code - Er ist dem aus der BB-Hilfe sehr ähnlich (wenn nicht fast identisch), darum weiss ich auch nicht was ich denn falsch mache Sad

Code: [AUSKLAPPEN]

Verz = ReadDir("Verzeichnis$")
Repeat
   Datei$ = NextFile$(Verz)
   If Datei$ = "" Then Exit
   If FileType(Datei$) = 2 Then
      Print "Ordner:" + Datei$
   Else
      Print "Datei:" + Datei$
   End If
Forever
CloseDir Verz
Print
Print "-Ende-"


Danke schonmal für jede Hilfe.

mfg
Ananas

Holzchopf

Meisterpacker

BeitragFr, Sep 09, 2011 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Verzeichnis "." ist das aktuelle und ".." das darüberliegende. Ist bei relativen Pfadangaben sehr nützlich, so kannst du von "C:\Programme\DeinSpiel\bin" aus via "..\gfx" auf "C:\Programme\DeinSpiel\gfx" zugreifen.

Code: [AUSKLAPPEN]
Verz = ReadDir("Verzeichnis$")
Steht das wirklich so in deinem Code?
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

blackgecko

BeitragFr, Sep 09, 2011 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die zwei Ordner die du findest sind sehr wohl "da", sie werden nur nicht angezeigt.
"." ist ein Verweis auf den Ordner, den du gerade ausliest.
".." ist ein Verweis auf den übergeordneten Ordner.
Meist will man die in einer Liste nicht dabei haben, muss man dann halt überspringen.

FileType braucht als Parameter einen vollständigen Pfad, das heißt
Code: [AUSKLAPPEN]
Verzeichnis$ + "/" + Datei$

FileType gibt übrigens 0 zurück, wenn es die Datei nicht findet - das fängst du aber im Else-Zweig ab und interpretierst es fälschlicherweise als Datei.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Ananas

BeitragFr, Sep 09, 2011 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe Smile Es läuft jetzt... Um die beiden Ordner zu "überspringen" habe ich jetzt einfach 2 mal NextFile vor der Schleife stehen.. oder gibts da eleganteres?

@Holzchopf: Nein ich habe nicht "Verzeichnis$" im Code tut mir leid^^ habs nur hier im Forum falsch eingetippt... Im Code stand der Pfad zwischen Anführungs und Schlusszeichen, den habe ich hier übereilig mit Verzeichnis$ ersetzt^^

Midimaster

BeitragFr, Sep 09, 2011 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
	Repeat
'nächstes File abscannen
Datei = NextFile( Verz )

'Ende ist erreicht
If Datei ="" Exit

'virt. File, das immer eine Instanz zurück zeigt ausschließen
If Datei<>"." And Datei<>=".."
If FileType(Datei$) = 2 Then
Print "Ordner:" + Datei$
Else
Print "Datei:" + Datei$
End If

EndIf


Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group