Crayzee Ivan
Mitglied
Hi!
Ich habe mir eine kleine Funktion geschrieben, an die ich einen Pfad sende (also "C:\" oder so), und die mir eine Liste (ein Array) der Unterverzeichnisse zurückgibt. Das ganze basiert auf der Windows-API, die verwendeten API-Calls sind FindFirstFile, FindNextFile, FindClose.
Die generelle Anwendung dieser Calls ist nicht mein Problem, die Funktion tut was sie soll, sie gibt alle Verzeichnisse zurück. Mein Problem ist aber, das die Ordner "." und ".." (jedem DOS-Veteranen sollten sie bekannt sein) auch aufgelistet werden. Hinzu kommt, das unter Windows XP (welches ich benutze) die Auslagerungsdatei "pagefile.sys" auch das Dateiattribut FILE_ATTRIBUTE_DIRECTORY hat, und somit auch aufgelistet wird.
Um dies zu verhindern habe ich folgendes probiert:
wfd ist ein Variable vom Typ WIN32_FIND_DATA, die von FindFirstFile und FindNextFile benutzt wird, um die gefundene Datei zurückzugeben, und cFileName ist der Name der gefundenen Datei.
Nach allem was ich finden konnte müsste die if-Abfrage alle Dateien aussortieren, die ".", ".." oder "pagefile.sys" als Namen haben.
Nur leider tut sie das nicht.
Allerdings: Ich habe erst vor kurzem angefangen mich ernsthaft mit C++ zu beschäftigen, und ich habe vorher VB programmiert, was mir einige Probleme bereitet hat (wie, es gibt keine String-Variable in C++?!
). Vielleicht habe ich deswegen etwas übersehen oder ähnliches.
Ich hätte die ganze Funktion hier posten können, aber soweit ich feststellen konnte, hängt mein gesamtes Problem an dieser if-Abfrage, und wie gesagt, alles andere funktioniert bestens.
Ich hoffe mir kann jemand hiermit helfen...
-Crayzee Ivan
Ich habe mir eine kleine Funktion geschrieben, an die ich einen Pfad sende (also "C:\" oder so), und die mir eine Liste (ein Array) der Unterverzeichnisse zurückgibt. Das ganze basiert auf der Windows-API, die verwendeten API-Calls sind FindFirstFile, FindNextFile, FindClose.
Die generelle Anwendung dieser Calls ist nicht mein Problem, die Funktion tut was sie soll, sie gibt alle Verzeichnisse zurück. Mein Problem ist aber, das die Ordner "." und ".." (jedem DOS-Veteranen sollten sie bekannt sein) auch aufgelistet werden. Hinzu kommt, das unter Windows XP (welches ich benutze) die Auslagerungsdatei "pagefile.sys" auch das Dateiattribut FILE_ATTRIBUTE_DIRECTORY hat, und somit auch aufgelistet wird.
Um dies zu verhindern habe ich folgendes probiert:
Code:
...
if (wfd.cFileName != "." && wfd.cFileName != ".." && wfd.cFileName != "pagefile.sys")
{
Liste erweitern, Dateiname hinzufügen etc..
}
...
Nach allem was ich finden konnte müsste die if-Abfrage alle Dateien aussortieren, die ".", ".." oder "pagefile.sys" als Namen haben.
Nur leider tut sie das nicht.
Allerdings: Ich habe erst vor kurzem angefangen mich ernsthaft mit C++ zu beschäftigen, und ich habe vorher VB programmiert, was mir einige Probleme bereitet hat (wie, es gibt keine String-Variable in C++?!

Ich hätte die ganze Funktion hier posten können, aber soweit ich feststellen konnte, hängt mein gesamtes Problem an dieser if-Abfrage, und wie gesagt, alles andere funktioniert bestens.
Ich hoffe mir kann jemand hiermit helfen...
-Crayzee Ivan