Parcour de sous repertoire

Signaler
Messages postés
65
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 mars 2007
-
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006
-
Bonjour,

Je cherche à récuperer le nom de tous les sous repertoire d'un repertoire afin de les insérer dans une liste.

Merci de votre aide.

12 réponses

Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

essaye de t'inspirer de ce code

HANDLE hfind;
WIN32_FIND_DATA wfd;
m_listesource.ResetContent();
m_listesource.InitStorage(50000, 255);


m_listerep.ResetContent();

/* Liste le contenu du répertoire */
hfind = FindFirstFile ( cheminfixe, &wfd );
if (hfind != INVALID_HANDLE_VALUE)
{
do
{
if( wfd.cFileName[0] != '.')
{


if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{

chemin2.Empty();
chemin2 = chemin2 + wfd.cFileName ; // chemin2 contient le repertoire que tu veux scanner
m_listerep.AddString(chemin2);
}

}

UpdateWindow();
}while(FindNextFile( hfind, &wfd));
FindClose(hfind);
}

TOCHE
Messages postés
14975
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
25 février 2021
94
Sous Windows, tu as les fonctions FindFirstFile(); FindNextFile()

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
Messages postés
14975
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
25 février 2021
94
Oups... pas dégainé assez vite, désolé

Buno
----------------------------------------
L'urgent est fait, l'impossible est en train de se faire. Pour les miracles, prévoir un délai...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Exemple de parcours complet, reste à adapter à ton cas:
TOUS FICHIERS D'UN DISQUE DUR (WIN32)
http://www.cppfrance.com/code.aspx?id=16638

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Eh bien, y avait du monde sur l'affaire...

ciao...
BruNews, MVP VC++
Messages postés
65
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 mars 2007

Toche,

J'ai re-utilisé ton code en l'adaptant à ma situation. Mon problème
c'est que wfd renvoyé par FindFirstFile ne contient qu'un seul element
:

hfind = FindFirstFile("c:\MonAppli\Langue", &wfd);

Au premier, et unique, passage chemin2 = Langue alors que dans le
repertoire "Langue" j'ai plusieurs sous repertoire "Fra", "Eng", etc..

.Je comprend pas
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

Le findfirstfile te renvezrra toujours qu'un repertoire et uniquement le premier, tu doit utiliser le findnextfile pour passer au suivant

hfind = FindFirstFile ( cheminfixe, &wfd );
if (hfind != INVALID_HANDLE_VALUE)
{
do
{
// traitement

}while(FindNextFile( hfind, &wfd));
FindClose(hfind);

cordialement.

TOCHE
Messages postés
65
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 mars 2007

Le soucis c'est que FindNextFile ne passe pas au repertoire suivant,
une fois le premier traitement fait, sur mon repertoire de base,
"Langue", je sort de la boucle while et ne parcours pas les sous
repertoire du dossier
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

Tu peux nous mettre la partie de ton code ou se trouve ta boucle?

TOCHE
Messages postés
65
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 mars 2007

C bon je viens de trouver la solution :



hfind = FindFirstFile("c:\MonAppli\Langue\*", &wfd);

au lieu de

hfind = FindFirstFile("c:\MonAppli\Langue", &wfd);



Merci à vous tous.
Messages postés
65
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
26 mars 2007

Petite question quand meme, à quoi sert le UpdateWindows à la fin de ta boucle ?
Messages postés
126
Date d'inscription
jeudi 5 juin 2003
Statut
Membre
Dernière intervention
11 juillet 2006

il me permet de mettre a jour ma listebox ou je viens d'ecrire le nom du repertoire, sinon tu as un effet statique puis affichage complet de tous les rep d'un seul coup.Avec un nombre important de repertoire tu as l'impression d'etre planter si dans ta boucle tu ne permet a ton appli de continuer a traiter les messages.

TOCHE