FindNext - Probleme
-
Hallo ich möchte ein Verzeichnis rekursiv durchsuchen. Daszu prüfe ich ob der Dateiname ein Verzeichnis ist und nicht ".." und nicht "." ist. Soweit die Theorie : hier der Quellecode.
void FindFiles( string StartPos ) { // Sucht im Aktuellen Verzeichnis nach allen Dateien. WIN32_FIND_DATA FindFileData; HANDLE hFind; string Search = StartPos + "\\*.*"; hFind = FindFirstFile(Search.c_str(), &FindFileData); while (FindNextFile(hFind,&FindFileData)) { if ( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && FindFileData.cFileName != ".." && FindFileData.cFileName != "." ) { cout<< FindFileData.cFileName << "\t"; string NextFolder = StartPos + "\\" + FindFileData.cFileName; cout<< "Ordner \t"<<NextFolder << "\n"; int a ; cin >> a; FindFiles(NextFolder.c_str()); } cout<< FindFileData.cFileName << "\n"; } //cout<< StartPos<<"\n"; FindClose(hFind); }Leider nimmt er triotzdem das Verzeichnis ".." mit und läuft dadurch natürlich in eine Endlosschleife. Kann mir jemand helfen ?=
-
FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
keine Ahnung ob's daran liegt aber mit == würde ich es nicht machen!
-
Danke für den Tipp aber daran lags leider nicht
-
Vielleicht daran: String-Vergleiche macht man mit strcmp

-
- FindFirstFile liefert auch schon einen Eintrag zurück, den ignorierst Du.
- Stringvergleiche würde ich immer mit lstrcmp durchführen und nie als direkten Vergleich.
- Nach dem Aufruf von FindFirstFile wird nicht geprüft, ob hFind ungültig (INVALID_HANDLE_VALUE) ist.