Recherche de fichier visual c++6.0

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 689 fois - Téléchargée 29 fois

Contenu du snippet

reponse à une question du forum...

une recherche de fichier dans un répertoire donné...

Rq: cette fonction était récursive à l'origine mais à été simplifiée pour les besoins...

pour la question,
spécifie le répertoire et met la liste en param (adresse!) (listeFic était dans ma classe...) tu peux utiliser un BLBString extrait des BListeIndir déjà Publiées sur ce site...

le critère sera "*.dat"
et le chemin sera .........\\data\
Magicalement,
Nono.

Source / Exemple :


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);
	}
}

Conclusion :


PS: n'oubliez pas de donner une note aux sources que vous utilisez et n'hésitez pas à mettre un ptt mot.

A voir également

Ajouter un commentaire Commentaires
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
tu devrais faire un tit programme d'exemple !!!

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.