SetCurrentDirectory(dir);
scanfloder(ffind,ffdata,dir);
return 0;
}
le probleme mon code ne scan pas tous les dossiers s'il vous plais aidez moi.montrez moi l'erreur et merci.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 20 sept. 2009 à 18:06
Et pense à ".." et ".".
Voilà un bout d'exemple (Qui sera loin de compiler en l'état...):
BOOL RT_API FileSys_EnumDir(TCHAR* lpPath, FILESYS_ENUMDIRPROC lpCallBack)
{
WIN32_FIND_DATA findFileData; /* Information sur les fichiers trouvés */
HANDLE hFind; /* Handle sur la recherche */
TCHAR lpDir[FILESYS_MAX_PATH]; /* Chemin de travail */
BOOL bRes;
bRes = FALSE;
/* Appel de la callback */
if (! lpCallBack(lpPath))
goto the_end;
/* Parcourt récursif */
lstrcpy(lpDir, lpPath);
lstrcat(lpDir, _T("\\*"));
hFind = FindFirstFile(lpDir, &findFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_FILE_NOT_FOUND)
bRes = TRUE;
goto the_end;
}
do
{
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
if (lstrcmp(_T("."), findFileData.cFileName) &&
lstrcmp(_T(".."), findFileData.cFileName))
{
lstrcpy(lpDir, lpPath);
lstrcat(lpDir, _T("\"));
lstrcat(lpDir, findFileData.cFileName);
if (! FileSys_EnumDir(lpDir, lpCallBack))
goto the_end;
}
}
while (FindNextFile(hFind, &findFileData));
FindClose(hFind);
/* Vérification que l'on est sorti de le la boucle */
/* car il n'y a plus de fichiers. */
if (GetLastError() == ERROR_NO_MORE_FILES)
bRes = TRUE;
the_end:
return bRes;
}