SCANNER DE DISQUES (RECURSIF)

Signaler
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37366-scanner-de-disques-recursif

Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009

Salut à tous

Bon, je sais, ça fait un peu déterrage :0)
mais, je suis tombé sur le code de yoyo qui m'a bien tiré d'affaire.

La fonction originale a été un petit peu modifiée pour en faire une fonction de copie récursive.

code:

void TFormPrincipal::CopieRecursiveFichiers(char *Dossier, char * pdossiercible)
{

/*d'après un code de yoyo269 code original http://www.cppfrance.com/codes/SCANNER-DISQUES-RECURSIF_37366.aspx
*/


HANDLE hRecherche;
WIN32_FIND_DATA WFD;
char * Nom = WFD.cFileName;
char DossFiltre[1024], DossRech[1024], DossCible[1024];
char source[1024], cible[1024];

strcpy(DossFiltre, Dossier);
strcat(DossFiltre, "\");
strcat(DossFiltre, "*.*");
hRecherche = FindFirstFile(DossFiltre, &WFD);

if(hRecherche == INVALID_HANDLE_VALUE)
{
FindClose(hRecherche);
return;
}
do
{
if((WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(WFD.cFileName, ".") && strcmp(WFD.cFileName, ".."))
{
strcpy(DossRech, Dossier);
strcat(DossRech, "\");
strcat(DossRech, Nom);

strcpy(DossCible, pdossiercible);
strcat(DossCible, "\");
strcat(DossCible, Nom);

//Application->MessageBox(DossCible, "rep CIBLE", MB_OK);

// PLACER LE CODE DE TRAITEMENT ICI, POUR LE DOSSIER "DossRech".
if (! DirectoryExists(DossCible) )
{
mkdir(DossCible);
}
CopieRecursiveFichiers(DossRech, DossCible);
}
}
else
{
sprintf(source, "%s\\%s", Dossier, WFD.cFileName);
sprintf(cible, "%s\\%s", pdossiercible, WFD.cFileName);

sprintf(msg, "CopyFile(%s, %s, false)", source, cible);
CopyFile(source, cible, false);
}
}

while (FindNextFile(hRecherche,&WFD));

FindClose(hRecherche);

}
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Ok merci BruNews !

YOYO, @+.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
*chaine = 0; fait 1 cycle, imbattable
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Ca y est j'ai corrigé le code. (merci vecchio et bayeto)
Qu'est-ce qui est le plus rapide pour remplacer le memset ?
*chaine = 0 ou utiliser directement le strcpy (ou autre chose) ?

YOYO, @+.
Afficher les 11 commentaires