Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 661 fois - Téléchargée 28 fois
void CFichier::exploreRepertoire(BString critere, bool progression) { /// ------------------------------------------------------------------------------------------------ /// ---------------- CFichier::exploreRepertoire(BString critere ,bool progression) ---------------- /// ------------------------------------------------------------------------------------------------ /// ----- Objectif : explore le répertoire en remplissant ses listes /// ----- Auteur(s) : Bruno CELLE 11/01/04 /// ----- PreCond : / /// ----- PostCond : / /// ----- Etat : 1 (-1<0<1<2) /// ------------------------------------------------------------------------------------------------ /// ----- BString critere(par défaut : '"*.* " ') : critère de recherche... /// ----- bool progression(par défaut : 'false') : affichage de la progression? (le trtt est parfois lent) /// ------------------------------------------------------------------------------------------------ /// ----- Var Utilisées de la classe (7) : chemin ,listeFic ,listeRep ,nomLong ,rechArborescente ,repertoire ,tri /// ----- Var Muettes (cf.partie préc) (2) : critere ,progression /// ----- Var Internes à la fonction (6) : file ,find ,nom ,pathname ,plomp ,rech /// ----- Var Utilisées par adresse (1) : file /// ----- Var In (7) : chemin ,critere ,nomLong ,progression ,rechArborescente ,repertoire ,tri /// ----- Var In Globales (1) : e /// ----- Var In Globales Constantes (2) : FILE_ATTRIBUTE_DIRECTORY ,INVALID_HANDLE_VALUE /// ----- Var Out (2) : listeFic ,listeRep if(!repertoire || nomLong=="") //sécu return; WIN32_FIND_DATA file; HANDLE find=NULL; BString rech=chemin,pathname,plomp,nom; rech+=nomLong; /// algo : Ajoute une barre oblique(\\) à la fin de la chaine si manquante if(!rech.endWith('\\\\')) rech+='\\\\'; rech+=critere; /// algo : recherche find=FindFirstFile(rech, &file); if(find != INVALID_HANDLE_VALUE) { if(progression) printf("+"); /// algo : POUR TOUT fichier trouvé do { if(progression) { //la progression pourrait être montrée par une hélice : les car de ('/-\\|' successivement affiché au même au emplacement) printf("."); fflush(stdout); } nom=file.cFileName; /// algo : SI un pas un répertoire if(!(file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { /// algo : {un fichier simple} /// nota : il peut s'agir d'un raccourcis... (cas non traité) plomp=chemin; plomp+=nomLong; plomp+='\\\\'; plomp+=nom; try { CFichier f(plomp,false,tri); listeFic+=f; } catch(BException& e) { if(e.which()!=1001) //err ouverture... throw(e); } } } while(FindNextFile(find, &file)); FindClose(find); } }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.