Lister des dossiers

Fermé
liam - 18 nov. 2003 à 10:27
 vincent - 1 juil. 2005 à 12:46
bonjour tout le monde!

J'ai fais un peit prog pour lister mes cd de donnees. Je veux pouvoir mettre mon cd dans mon pc et ensuite avec mon prog, je veux pouvoir creer un fichier qui va contenir une sorte de mini base de donnee. Le prog marche tres bien quand je l'applique sur un dossier sur le disque dur, il parcours bien recursivement tous les dossiers. Par contre, quand je l'applique sur un cd, il ne marche pas recursivement... Voici la fonction quiparcours les dossiers et stocke mes fichiers dans une liste. Qqun pourait il m'aider?

static std::vector<t_data> create_FileList(std::string path, std::vector<t_data> list)
{
WIN32_FIND_DATA FindFileData;
   HANDLE hFind;
std::string tmp;

tmp = path + "\\*";
 hFind=FindFirstFile(tmp.c_str(), &FindFileData);

    do
{
if (strcmp(FindFileData.cFileName, ".")
&& strcmp(FindFileData.cFileName, "..")
&& (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_HIDDEN))
{
if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
{
t_data data;
	
data.name = (LPCTSTR)FindFileData.cFileName;
data.dir = path;
data.type = "DIR";
				
list.push_back(data);

tmp = path + "\\" + (LPCTSTR)FindFileData.cFileName;
list = create_FileList(tmp, list)

}
else
{
t_data data;

data.name = (LPCTSTR)FindFileData.cFileName;
data.dir = path;
data.type = "FILE";
list.push_back(data);
}
}
}
while ( FindNextFile(hFind, &FindFileData) );

FindClose(hFind);
return list;
}


voila, dsl pour l'indentation!

9 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
18 nov. 2003 à 11:21
Salut, moi il y a un truc qui me tracasse dans ton code (autre que l'indentation :-D), c'est que je ne vois pas ou il peut etre recursif!!!
Tu es sur qu'il est recursif sur C:? 8-)
A mon avis pour chacune de tes directories (donc dans ton while), il faut que tu refasses appel a ta fonction...

.  .
\_/
      Heeeeeeuuuuuuu


                
0
Slt teebo,

si si il est recursif, je fais appel a ceci:
list = create_FileList(tmp, list);
des que je trouve un dossier, c'est a dire des que:
FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY.

La recursivite marche bien sur mon disque dur, mais elle ne marche pas quand je veux l'appliquer sur un cd... relou :(
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
18 nov. 2003 à 11:42
Oops, autant pour moi je n'avais pas vu...Tu as essaye avec un breakpoint sur celle ligne la?

.  .
\_/
      Heeeeeeuuuuuuu
0
ben oui, et il ne rentre pas dans la premiere condition, ni dans la seconde... donc il ne les considere ni comme des dossiers, ni comme des fichiers... il ne me reste qu'a lui dire via mon directory browser de rentrer dans chaque dossier a la main... C'est tjrs une solution mais c'est vrai que ca aurait ete mieux si ca c'etait fait tt seul. Je continue qd meme a chercher un peu. Dans tous les cas, merci pour ton aide!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
18 nov. 2003 à 12:05
Tu peux peut etre essayer avec ca non?

CFileFind::IsDirectory
BOOL IsDirectory( ) const;



.  .
\_/
      Heeeeeeuuuuuuu
0
ben je ne connaissais pas... Je vais essayer et je te tiens au courant! Merci beaucoup.
0
gallagher Messages postés 5 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 9 décembre 2003
19 nov. 2003 à 09:44
ca marche! Merci beaucoup teebo! En plus c bien plus simple
que la methode que j'utilisais avant...

liam
Etudiant en info (EPITA)
0
interressant comme programme tu l'appliques sur quel logiciel ou comment ca marche, ca pourrait etre pas mal pour creer mopi aussi des listes automatiques...merci
0
gallagher Messages postés 5 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 9 décembre 2003
19 nov. 2003 à 11:11
slt gisles,

mon programme me sert a gerer mes mp3. Il cree un liste de tous mes mp3 (et pour cela, je dois inserer un par un tous mes cd de mp3), et il me permet de faire un recherche dans cette liste. J'en avais marre de pas savoir ce qu'il y avait sur mes cd... Maintenant c'est regle ;)

liam
Etudiant en info (EPITA)
0
salut,

pourrais je avoir une copie complete du projet stp??

ca peux toujours servir
0