begin process at 2008 07 05 07:22:08
1 205 055 membres
41 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALGO DE RECHERCHE RECURSIF


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : recherche, recursif, recursive Niveau : Débutant Date de création : 07/08/2005 Vu : 2 745

Note :
3 / 10 - par 2 personnes
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

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

  • //---------------------------------------------------------------------------
  • #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);
  • }
  • //---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#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);
}
//---------------------------------------------------------------------------
  • signaler à un administrateur
    Commentaire de BruNews le 07/08/2005 16:14:16 administrateur CS

    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++ ?

  • signaler à un administrateur
    Commentaire de petit_loup77 le 06/03/2006 11:26:30

    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
    @++

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS