Rekursion funktioniert nicht
-
N'abend
ich habe eine Rekursion erstellt, die einen Pfad durchsucht.
Das Problem ist, dass irgendwelche Speicherlecks auftreten.
void RecursiveSearch(LPWSTR lpPath, LPWSTR lpFilter, LPWSTR lpDestination) { WCHAR search[MAX_PATH + 1]; lstrcpy(search, lpPath); if (search[wcslen(search) - 1] != L'\\') lstrcat(search, L"\\"); lstrcat(search, lpFilter); WIN32_FIND_DATA findData; HANDLE hFind = FindFirstFile(search, &findData); WCHAR path[MAX_PATH + 1]; do { if ((findData.cFileName[0] != L'.') || ((lstrlen(findData.cFileName) > 1) && (findData.cFileName[0] != L'.')) || (lstrlen(findData.cFileName) > 2)) { lstrcpy(path, lpPath); if (path[wcslen(path) - 1] != L'\\') lstrcat(path, L"\\"); lstrcat(path, findData.cFileName); if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { RecursiveSearch(path, lpFilter, lpDestination); } else { MoveFound(path, lpDestination); } } } while (FindNextFile(hFind, &findData)); }Vielen Dank.
-
"irgendwelche speicherlecks".. das sind ja mal richtig geile fehlerbeschreibungen. da kann dir jeder sofort helfen

-
Wenn Du Resourcen anforderst (vom OS), dann müssen die wieder freigegeben werden, wenn sie nicht mehr benötigt werden:
http://msdn2.microsoft.com/en-us/library/aa364418.aspx
FindFirstFile erfordert ein FindClose !!!
Simon
-
Gut, sry.
Das FindClose habe ich hinzugefügt.
Der Fehler tritt bei FindNextFile auf. ich weiß wirklich nicht, woran es denn liegen könnte.
-
Der Fehler tritt bei FindNextFile auf. ich weiß wirklich nicht, woran es denn liegen könnte.
Welcher Fehler... beschreibe das genauer.
-
Ev. sind falsch od. nicht NULL- terminierte strings dafür (wofür???) verantwortlich...