Algo de recherche recursif

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 724 fois - Téléchargée 31 fois

Contenu du snippet

C'est un petit algorithme qui permet comme sont nom l'indique de faire une recherche recurcive dans un dossier donné à travers 3 fonctions.
On parcours ainsi tout les sous dossiers pour trouver les fichiers.

Source / Exemple :


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Recherche.h"
using namespace std;
#include <filectrl.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        Recherche();
}
//---------------------------------------------------------------------------
void Recherche()
{
        AnsiString Dossier;
        if(SelectDirectory("Choisir le dossier source","",Dossier))
        {
              RechercheDossier(Dossier);
        }

}
//---------------------------------------------------------------------------
void RechercheFichier (AnsiString Dossier)
{
        AnsiString Filtre =  Dossier + "\\*.*";

        TSearchRec sr;
        int done;

        done = FindFirst(Filtre, faAnyFile, sr);
        while(!done)
        {
                //--- testes si l'extension est une image possible
                AnsiString Ext;
                int PosPoint = sr.Name.LastDelimiter(".");
                Ext = sr.Name.SubString(PosPoint+1,sr.Name.Length()-PosPoint).LowerCase();
                if(Ext=="bmp" || Ext=="jpg" || Ext=="jpeg" || Ext=="wmf" || Ext=="emf")
                {
                        AnsiString Fichier = Dossier + "\\"+sr.Name;
                        Form1->Memo2->Lines->Add(Fichier);

                }
                done = FindNext(sr);
        }
}
//---------------------------------------------------------------------------

void RechercheDossier (AnsiString Dossier)
{

        AnsiString Filtre =  Dossier + "\\*.*";

        TSearchRec sr;
        int done;
        done = FindFirst(Filtre, faDirectory, sr);
        while (!done)
        {

                AnsiString Ext = ExtractFileExt(sr.Name);
                if (Ext == "")
                {
                        Form1->Memo1->Lines->Add(sr.Name);
                        RechercheDossier(Dossier+ "\\"+sr.Name);
                }
         
                done = FindNext(sr);
        }
        RechercheFichier(Dossier);
}
//---------------------------------------------------------------------------

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
6 mars 2006

humm...
un zip aurai été sympas (avec la source sous builder),
utilise que les librairie de builder dommage je cherche la meme source mais en C (qui compile avec gcc)
mais c'est bien quand meme
@++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Salut,

le prends pas mal mais tu crois que ça aide qlq'un de lire ça (et toi idem de le faire) ? c'est du pur interprété tout cela, on utilise un truc bidule composant, quel rapport avec du C/C++ ?

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.

Du même auteur (shadow52)