Pb urgent - Parcourir un repertoire et lister les fichier - besoin d'aide

Signaler
Messages postés
57
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour a tous,

je suis en super galere, je suis sur un proj, mais je bug grave sur un ptit module de rien du tout, et la j'en peux plus...
Je suis sur que quelqu'un pourra m'aider facilement sans que ca prenne trop de temps.

En fait voila le truc: je dois lister l'ensemble des fichiers appartenant a un repertoire donne.
En entree je donne le path d'un repertoire ex: c:\dossier\
en sortie je veux avoir un fichier txt avec la liste des fichier.

Bon en fait j'ai avance un peu, j'ai des notions tout de meme, mais je galere avec les fonction du style FindFirstFile ...

Encore une fois si quelqu'un pouvait me debloquer ca le ferait bien.

Merci d'avance

8 réponses

Messages postés
10
Date d'inscription
dimanche 11 avril 2004
Statut
Membre
Dernière intervention
13 septembre 2009

Voila:

void RechercheFichiers(CString Chemin)
{
CFileFind Find;


// Initialise le répertoire
SetCurrentDirectory(Chemin);


// Début de la recherche
BOOL bWorking=Find.FindFile("*.*");

while (bWorking)
{
bWorking = Find.FindNextFile();


if (Find.IsDirectory())
{
if(Find.GetFileName().Compare(".") != 0 && Find.GetFileName().Compare("..") != 0)
{
//On a trouvé un dossier, rapelle la fonction pour examiner le contenu du dossier
RechercheFichiers(Chemin + "\" + Find.GetFileName());
}
}
else
{
//On a trouvé un fichier, son nom est dans Find.GetFileName
//On l'ajoute au fichier
FILE *stream;
stream = fopen("c:\\\\test.txt","a");
char *chaine = new char[Find.GetFileName.GetLength()];
for(int i = 0; i < Find.GetFileName.GetLength(); i++)
chaine[i]=Find.GetFileName[i];
fwrite(chaine,sizeof( char ),Find.GetFileName.GetLength(),stream);
fclose(stream);
}
}
// Fin de la recherche
Find.Close ();
}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
ici en WIN32:

TOUS FICHIERS D'UN DISQUE DUR (WIN32)
http://www.cppfrance.com/code.aspx?id=16638

ciao...
BruNews, MVP VC++
Messages postés
57
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
24 avril 2013

Merci les gars c'est bien cool d'avoir repondu si vite.

BruNews, ton code fonctionne bien il a l'air tres interessant, mais c'est carrement trop complique pour moi

Et marc_pl merci, mais je me retrouve avec moultes erreurs que je suis dans l'incapacite a resoudre (je suis vrqiment nul en programmation).
T'as compile ca que t'as code? Si oui c'est que je suis un autiste, et dans ce cas si tu peux me montrer comment le faire marcher ce serait cool
Sinon tant pis tant pis

Merci encore les gars
++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Le code de marc_pl est en MFC, faut donc faire un proj MFC pour le compiler.

ciao...
BruNews, MVP VC++
Messages postés
57
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
24 avril 2013

C'est chiant ca,
parce qu'en fait ce truc c'est pour un proj classique (desole je suis vraiment un naze)
En fait j'essaie de faire un outil de test pour un truc de math( simulation de processus continus, monte carlo, estimation controlee...).
Donc j'ai des fichiers en xml, j'ai besoin d'info situee entre certaines balises, et je dois afficher les valeurs a la suite dans un fichier texte
Donc ca no problemo
Mais en fait ce que je veux c'est pouvoir le faire automatiquement pour plusieurs fichiers qui seront tous dans le meme repertoire (et le repertoire contiendra uniquement les fic xml)

Actuellement je suis oblige de rentrer le nom des fichiers a la main, et ya des sessions ou je le fais pour 20 fichiers xml.

Donc l'astuce c'est de faire une petite fonction dans laquelle on fournit le nom du repertoire puis on recupere le nom des fichiers dans un fic txt
Comme ca apres c'est ultra rapide...


Alors question, est ce que c'est possible de faire ca dans un proj classique,
ou alors je suis oblige de faire un proj MFC.
Si je suis oblige j'ai une petite galere, je code VisualC++6, et les MFC projet yen a trois types differents MFC ActiveX ControleWizard
MFC AppWizard(dll)
MFC AppWizard(exe)

Donc bon comme je suis pas totalement assiste, j'ai deja essaye avec le premier ActivX ControlWizard, je cree ensuite mon cpp, mais a la fin il me met une unique erreur du type :
"Unexpected End Of File looking for precompiled header directive"
Le code que je met est une adaptation de celui de Marc_pl, sur mon proj classique il compile bien, il ya des erreurs pendant le linkage.

Ouuf, gros msg qd meme.
Donc voila je suis en galere, si tu peux maider un peu BruNews, c'est genial, sinon tant pis ...

++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
projet MFC exe standard, dialog devrait t'aller.

ciao...
BruNews, MVP VC++
Messages postés
57
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
24 avril 2013

Bon ca y est g reussi, ca marche bien, ca liste nickel.

Par contre j'aurais une derniere question et se sera fini.
En fait ca liste bien les fichiers du repertoire, mais lorsque je les affiche, ils sont classes par ordre alphabetique.

Yaurait pas moyen de les afficher dans l'odre ou ils se trouvent dans le repertoire?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
ordre du répertoire ??? ça dépend de la vue que tu as dans explorateur, de son tri.


L'ordre réel est donné par FindFirstFile FindNextFile dans l'ordre où ils t'arrivent.

ciao...
BruNews, MVP VC++