Seite 1 von 3
ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 20:28
von D4uS1
In dem folgenden Beispielcode werden mir, bevor die Namen der wirklich existierenden Unterverzeichnisse auftauchen, immer erst ein Unterverzeichniss mit dem Namen "." und eins mit dem Namen ".." debuggt. Weshalb ist das so?
Code: Alles auswählen
ExamineDirectory(0, "C:\Beispiel\", "")
While NextDirectoryEntry(0)
Debug DirectoryEntryName(0)
Wend
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 20:30
von Kaeru Gaman
weil traditionell die ersten beiden Einträge in der FAT die Zeiger zur Current und zur Parent sind.
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 20:33
von D4uS1
Das bedeuted, dass ich das also nur ändern kann wenn ich if-Bedingen so einfüge, dass die entsrpechenden Namen "." und ".. " nicht debuggt werden sollen.
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 20:57
von rolaf
D4uS1 hat geschrieben:Das bedeuted, dass ich das also nur ändern kann wenn ich if-Bedingen so einfüge, dass die entsrpechenden Namen "." und ".. " nicht debuggt werden sollen.
Oder so:
Code: Alles auswählen
ExamineDirectory(0, "C:\Programme\", "")
NextDirectoryEntry(0)
NextDirectoryEntry(0)
While NextDirectoryEntry(0)
Debug DirectoryEntryName(0)
Wend
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 21:02
von ts-soft
Keine gute Idee:
Code: Alles auswählen
If ExamineDirectory(0, "C:\", "")
NextDirectoryEntry(0)
NextDirectoryEntry(0)
While NextDirectoryEntry(0)
Debug DirectoryEntryName(0)
Wend
EndIf
Mir fehlt jetzt nämlich was

Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 21:10
von rolaf
ts-soft hat geschrieben:Mir fehlt jetzt nämlich was

Ick habs jeahnt das du dich meldest.
Code: Alles auswählen
ExamineDirectory(0, "C:\Programme\", "")
While NextDirectoryEntry(0)
If DirectoryEntryName(0) <> "."
If DirectoryEntryName(0) <> ".."
Debug DirectoryEntryName(0)
EndIf
EndIf
Wend
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 21:13
von ts-soft
DrFalo hat geschrieben:
Ick habs jeahnt das du dich meldest.
Was soll ich machen, wenn Du sowas postest. Deine beiden Codes erzeugen
übrigens ein IMA unter Vista oder 7, weil der Ordner Programme nicht existiert,
bzw. es nur ein Link ist. Deshalb immer überprüfen ob ExamineDirectory erfolgreich war.
Gruß
Thomas
Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 21:20
von rolaf
Ach so aber scheinbar war C:\Beispiel\ vorhanden, oder meckerste nur bei mir?
Das man das überprüft war hier nicht die Frage und dürfte klar sein. Ansonsten kannst du gleich ganze Projekte hier posten, weil in Codestückchen meistens irgend was fehlt.

Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 21:32
von ts-soft
Verzeichnisse sollte immer überprüft werden, weil ExamineDirectory nur mit realen Verzeichnissen
funktioniert. Entsprechenden Code von freak gibt es hier:
http://www.purebasic.fr/english/viewtop ... 33#p282633
Das sollte man neben dem If beherzigen, wenn man auch aktuelle Betriebssysteme unterstützen möchte.
Mir gefällt das zwar auch nicht, das hätte MS IMHO auch besser lösen können.
Also wenn man es korrekt mache möchte, ist es mit ein paar Zeilen nicht erledigt!

Re: ExamineDirectory erkennt "." und ".."
Verfasst: 13.04.2010 22:06
von CSHW89
ts-soft hat geschrieben:DrFalo hat geschrieben:
Ick habs jeahnt das du dich meldest.
Was soll ich machen, wenn Du sowas postest. Deine beiden Codes erzeugen
übrigens ein IMA unter Vista oder 7, weil der Ordner Programme nicht existiert,
bzw. es nur ein Link ist. Deshalb immer überprüfen ob ExamineDirectory erfolgreich war.
Gruß
Thomas
das hat aber nichts mit vista oder 7 zutun. der code erzeugt ein IMA, wenn schlicht und ergreifend 'C:\Programme\' nicht existiert. das kann mehrere gründe haben. englischer pc, oder das laufwerk auf dem das betriebsystem drauf ist, ist nicht c:.
lg kevin