FindFirstFileW / FindNextFileW: Problem
-
Hallo Leute.
Ich möchte ein Unicode-fähiges Prog erstellen, darum habe ich den code wie folgt gestaltet:
{ WIN32_FIND_DATAW findData; HANDLE hFind = FindFirstFileW(lpDirectory, &findData); if (hFind == NULL) return; do { if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { MessageBoxW(NULL, findData.cFileName, L"Fehler", MB_OK); } } while (FindNextFileW(hFind, &findData)); }
Aber das Problem ist, dass die MessageBox gar nicht erst erscheint, ob wohl das Verzeichnis korrekt angegeben wird, aber wenn ich die If-Anweisung entferne, erscheint eine MessageBox mit kryptischen Zeichen.
Was kann ich tun?
VIelen Danke.
-
Bau das mal um dann sollte es laufen
{ WIN32_FIND_DATAW findData; BOOL Next; HANDLE hFind = FindFirstFileW(lpDirectory, &findData); if (hFind == NULL) return; do { Next = FindNextFileW(hFind, &findData)); if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { MessageBoxW(NULL, findData.cFileName, L"Fehler", MB_OK); } } while (Next) }
is auch so in der MSDN beschrieben
Gruß Matthias
-
die ersten 2 files die du findest sind
'.' und '..'du musst als insgesamt 3x lesen bis du die erste datei hast in dem verzeichnis.
-
Also ich persönlich würde ja Linux nehmen, nur echt mit dem GNU-Qualitätssiegel.
-
- lpDirectory muss eine Dateimaske enthalten, ansonsten wird nur ein Treffer gefunden.
- Im Fehlerfall gibt FindFirstFile den Wert INVALID_HANDLE_VALUE zurück und nicht NULL.
- Das FindClose fehlt.
WIN32_FIND_DATAW findData; HANDLE hFind = FindFirstFileW(L"C:\\*.*", &findData); if (INVALID_HANDLE_VALUE != hFind) { do { if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { MessageBoxW(NULL, findData.cFileName, L"Fehler", MB_OK); } } while (FindNextFileW(hFind, &findData)); FindClose(hFind); }