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

eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013 - 25 août 2005 à 17:59
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 août 2005 à 15:24
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

marc_pl Messages postés 10 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 13 septembre 2009
25 août 2005 à 18:18
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 ();
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2005 à 19:05
ici en WIN32:

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

ciao...
BruNews, MVP VC++
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
26 août 2005 à 11:41
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
++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 août 2005 à 12:13
Le code de marc_pl est en MFC, faut donc faire un proj MFC pour le compiler.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
26 août 2005 à 12:57
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 ...

++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 août 2005 à 13:05
projet MFC exe standard, dialog devrait t'aller.

ciao...
BruNews, MVP VC++
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
29 août 2005 à 14:52
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?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 août 2005 à 15:24
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++
0
Rejoignez-nous