yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006
-
16 déc. 2005 à 11:25
yserver
Messages postés203Date d'inscriptionlundi 2 août 2004StatutMembreDernière intervention 8 septembre 2006
-
16 déc. 2005 à 14:02
Bonjour,
Cette fonctions marche très bien, mais produit une sortie inattendu pour moi. J'ai beau chercher je ne trouve pas la raison de ce résultat.
ulNbRep est toujours correct, mais ulNbFichiers est toujours égale au nombre de fichiers plus le nombre de répertoire réellement présent à l'emplacement analysé.
//ulNbFichiers et ulNbRep sont des variable globales
void Count_Files (char cRep[512])
{
//Déclaration des variables
char cChemin [512];
char cTemp [2];
WIN32_FIND_DATA wData;
HANDLE hFind;
//Initialisation des variables
//Ajout de *.* cChemin
sprintf ( cChemin , "%s*.*" , cRep) ;
//Initialisation du Handle de recherche de fichiers
hFind = FindFirstFile(cChemin, &wData);
//Suppresion de *.* a cChemin
strcpy(cChemin, cRep);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
MessageBox(NULL, wData.cFileName, "Fichier", NULL);
if ((strcmp(wData.cFileName, "..")) && (strcmp(wData.cFileName, ".")))
{
//Si C'est un répertoire
if (wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
//puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans...
sprintf (cChemin , "%s%s\",cRep ,wData.cFileName);
//On rappelle la fonction pour qu'elle analyse le sous répertoire
Count_Files(cChemin);
ulNbRep ++;
// revient un repertoire en arriere
strcpy(cChemin,cRep);
}
//Si non c'est un fichier
else
// ce n'est pas un répèrtoire donc le fichier est analysé
sprintf ( cChemin , "%s%s" , cRep , wData.cFileName );
ulNbFichiers ++;
}
} while ( FindNextFile ( hFind , &wData ) ) ;
}
FindClose( hFind );
}
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 16 déc. 2005 à 14:01
ben pour la vitesse et taille code.
1 seule instruction
cmp byte ptr cFileName[0], '.'
jne LABEL
absolument imbattable et vu que le résultat est le même, pas de raison de se priver.