Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2955 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [VC++]help avec la classe CFileFind?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++]help avec la classe CFileFind?

n°278261
Acidman
no comment
Posté le 02-01-2003 à 10:37:58  profilanswer
 

Voila Je voudrais lister tous le contenu  mon disque dur avec repertoire et sous repertoire afin de les mettre dans un treeview
mais j'ai un peu de mal avec la fonction pour lister mon disque
pour l'instant j'ai fait ca:
CFileFind filefind;
CString path;
 
if(filefind.FindFile("c:\\*.*" ))
{
     if(filefind.FindNextFile())
     {
 path=filefind.GetRoot();
 m_CtlTree.InsertItem(path,0,0);
 
 while(1)
 {
   //on cherche le prochain fichier si il existe
   if(filefind.FindNextFile())
   {
  //on recupere son nom
  path=filefind.GetFilePath();
  //on l'affiche dans le tree view
  m_CtlTree.InsertItem(path,0,0);
           }
   else
  break;
 
        }
     }
}
 
 
Donc la je liste mon disque a partir de la racine avec les nom de repertoire et les fichiers
maintenant je voudrais faire la suite c a d listé les sous repertoire et leur contenu
 
Et la j'avoue que je bloque un peu
de l'aide serait le bienvenu
 
 

mood
Publicité
Posté le 02-01-2003 à 10:37:58  profilanswer
 

n°278302
Joel F
Real men use unique_ptr
Posté le 02-01-2003 à 12:35:15  profilanswer
 

Simple lorque tu trouve un fichier teste si c un fichier ou un folder (File.IsFolder je crois), si c un folder, tu relance ta fonction de listage en partant de ce folder. Une fonction ecursive koi ...
 

Code :
  1. void recursiveFileFind( CString root )
  2. {
  3. CFileFind filefind;
  4. CString path;
  5. path.format("%s\\*.*", root );
  6. if(filefind.FindFile(path)
  7. {
  8.     if(filefind.FindNextFile())
  9.     {
  10.       path=filefind.GetRoot();
  11.       m_CtlTree.InsertItem(path,0,0);
  12.      while(filefind.FindNextFile())
  13.      {
  14.       //on cherche le prochain fichier si il existe  
  15.       //on recupere son nom  
  16.    
  17.      path=filefind.GetFilePath();
  18.      //on l'affiche dans le tree view  
  19.      m_CtlTree.InsertItem(path,0,0);
  20.     // si c un directory, on repart.
  21.     if( filefind.isDirectory() )
  22.     {
  23.        CString newroot;
  24.        newroot = root + path;
  25.        recursiveFileFind( newroot );
  26.     }
  27.    }
  28. }
  29. }

n°278322
Acidman
no comment
Posté le 02-01-2003 à 13:19:46  profilanswer
 

merci
j'ai tester ca marche mieux
seul truc c que ca ne va pas parcourir tous les sous repertoire
exemple dans windows tu as le repertoire options qui lui meme contient le repertoire cabs
 
en faite c une question de nivo de profondeur
je v arranger ca je pense

n°278332
Joel F
Real men use unique_ptr
Posté le 02-01-2003 à 13:51:49  profilanswer
 

euh si desole ...
le fait de rappeler la fonction avec une nouvelle racine relance le truc ...
Parcontre oui, il fo peut etre changer les param du insert ds le treeview pour afficher l'arborescence proprement.

n°278336
Acidman
no comment
Posté le 02-01-2003 à 13:54:28  profilanswer
 

ba ecoute je te remercie de ton aide encore une fois
mais je viens de reteste et la fonction va dans un repertoire puis un sous rep et c tout elle ne va pas plus loin  
enfin c ce que j'ai constater

n°278347
Joel F
Real men use unique_ptr
Posté le 02-01-2003 à 14:01:12  profilanswer
 

bizarre theoriquement ... ca devrait marcher !!
t'as bien verifier qu'y avait + d'un sousrep ...

n°278352
Acidman
no comment
Posté le 02-01-2003 à 14:05:22  profilanswer
 

en faite je viens de tester avec des messagesbox
et le truc c que dans newroot tu as par exemple:      
mesdocumentC:\mesdocument  et c le C:\ qui ce met au millieu

n°278353
Acidman
no comment
Posté le 02-01-2003 à 14:06:46  profilanswer
 

oui j'ai bien verifier
je n'ai qu'un niveau de profondeur(j'entend par la un repertoire puis un sous rep mais apres si y'a d'autres sous rep et bien il y va pas)

n°278428
Joel F
Real men use unique_ptr
Posté le 02-01-2003 à 16:27:44  profilanswer
 

ah OK c'est une erreur de ma part.
Faut pas faire  
 

Code :
  1. newroot = root .fileFinder.GetPath()


 
mais
 

Code :
  1. newroot = root .fileFinder.GetTitle()


 
juste recuperer le nom pas le chemin complet

n°278645
Acidman
no comment
Posté le 03-01-2003 à 09:44:39  profilanswer
 

ah ok
mais a quel endroit tu modifie ca?
while(filefind.FindNextFile())  
    {  
     //on cherche le prochain fichier si il existe  
 
     //on recupere son nom  
     
   //[#c63800]tu change ici?
    path=filefind.GetFilePath();  
 
    //on l'affiche dans le tree view  
    m_CtlTree.InsertItem(path,0,0);  
 
   // si c un directory, on repart.  
 
   if( filefind.isDirectory() )  
   {  
      CString newroot;  
      //[#d42a00]ou bien ICI?
      newroot = root + path;  
      recursiveFileFind( newroot );  

mood
Publicité
Posté le 03-01-2003 à 09:44:39  profilanswer
 

n°278650
Acidman
no comment
Posté le 03-01-2003 à 09:59:39  profilanswer
 

Bizarrement dans root je n'ai rien
je viens de verifier avec un MessageBox.
donc quand je concatene et bien ca me concatene rien avec le nom  
ce qui fait que je n'ai pas le bon chemin
 :??:

n°279875
Acidman
no comment
Posté le 06-01-2003 à 09:11:44  profilanswer
 

up

n°281945
Acidman
no comment
Posté le 08-01-2003 à 14:14:25  profilanswer
 

[:_deckard_]  [:_deckard_]  [:_deckard_]  [:_deckard_]

n°285065
Acidman
no comment
Posté le 13-01-2003 à 13:02:00  profilanswer
 

UP


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [VC++]help avec la classe CFileFind?

 

Sujets relatifs
help svp [menu][HTML] Les cadres c'est prise de tête sniff ... need help svp :(
Installation GD 2.0--> Help !![JAVASCRIPT] Popup en JS, tout petit probleme: pliz help
constructeur d'une classe dérivéeQuelqu'un a déjà utilisé la classe URI?
[C - BEGINNER] Help Needed !!!! je vais peter un cable :'([PHP] noobi need help pour selectionner ds un tablo
MySQL + REQUETE DELETE AVEC IMBRICATION !!!! HELP !!!!!!!Connection en SYSDBA masterkey en localhost , ne marche pas ,help!!!!
Plus de sujets relatifs à : [VC++]help avec la classe CFileFind?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR