IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Ouverture de dossier [Sources]


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Ouverture de dossier
    Bonjour,

    Dans mon application, j'ai besoin de pouvoir séléctionnez tous les sous-arboresence d'un dossier ou disque dur, afin d'y recuperer tous les fichiers Mp3.

    J'arrive déjà à récuperer tous les fichiers mp3 d'un dossier mais je n'arrive pas à récupérez les fichiers qui se trouve dans un sous-dossiers.

    Voici le code que j'utilise pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SelectDirectory("Ouvrez un dossier de fichier MP3","",v_dossier_ouvrir);
    v_dossier_ouvrir += "\\";
     
    Extensions->Add(".mp3");
    ChargeListe(v_dossier_ouvrir, Extensions, l_playbox->Items);
     
    void ChargeListe(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers)
    {
      TSearchRec Infos_fichier;
      if (!FindFirst(FilePath+"*.*", faAnyFile, Infos_fichier))
      do
      {
        for (int i=0; i<Extensions->Count; i++)
        {
          if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions->Strings[i].LowerCase())
            ListeFichiers->Add(Infos_fichier.Name);
        }
      }
      while(!FindNext(Infos_fichier));
     
      FindClose(Infos_fichier);
    }
    Merci d'avance

    -------------------------
    balises [CODE] ajoutées par LFE
    pensez-y à l'avenir

  2. #2
    Membre habitué
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Points : 167
    Points
    167
    Par défaut
    Salut,

    Je vois deux solutions possibles :

    Soit utiliser une commande system, avec redirection de la sortie standard vers un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dir /s C:\MonRep\*.mp3 > C:\Liste.txt
    le /s servant à parcourir tous les sous-dossiers.

    Soit en le faisant à la main (j'ai fait ça à une époque 8) ) :
    avec une TListBox, dans laquelle tu ajoutes tous les sous-rep que tu rencontres (avec le path complet).
    Initialement, cette liste ne contient que "C:\\MonRepde Départ"
    Puis à chaque fois que tu listes le contenu d'un rep, tu ajoutes tous les sous-rep à la fin, et tu enlèves celui-ci (de la première position de la liste).
    Dès que tu arrives à une liste vide ... c'est fini

    Je te conseille personnellement cette méthode ;
    l'avantage étant de ne pas avoir cette horrible fenêtre noire, et en plus le traitement du fichier Liste.txt est laborieux.

    Bonne Chance
    Mathieu
    Développeur confirmé C++, Java, Python, JS.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    Je l'avais fait il y a longtemps en delphi 6 pro ici :

    http://phidels.com/php/programmes/zi...3_scarabee.zip

    Regarde ca devrait pas etre trop dur de traduit delphi 6 en builder c++ (quasiement pareil, tu remplace les truc.truc et truc->truc)... je pense que ca devrait t'aider

    Extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    {Trouve tous les sous repertoire à partir d'un repertoire initial}
    procedure  TFormLecteurMP3.TrouverRepertoire(Chemin : String);
    var
      Recherche : TSearchRec ;
      Trouver : Boolean;
     
    begin
      {On arrive dans un repertoire, on cherche tous les mp3 puis on cherche les repertoires.
      Si on trouve un repertoire, on "rentre dedans" et on recommence le processus...}
     
      TrouverFichier(Chemin,'*.mp3');  // Permet de lister tous les fichiers determinés d'un repertoire
      Try
        Trouver := (FindFirst(Chemin+'*.*',faDirectory,Recherche) = 0) ;
        while (Trouver) do
        begin
          {"." étant le meme repertoire (evite une boucle), ".." étant le repertoire pere}
          If (Recherche.Name <> '.') and (Recherche.Name <> '..') and ((Recherche.Attr and faDirectory) <> 0) Then
          Begin
            TrouverRepertoire(Chemin+Recherche.Name+'\');
            Trouver := (FindNext(Recherche) = 0) ;
          end
          else
            Trouver := (FindNext(Recherche) = 0);
        end;
      Finally
        FindClose(Recherche) ; { <= IMPERATIF pour libérer ressources Win32 }
      end;
     
    end;
     
     
    {Trouve tout les fichier d'un répertoire}
    Procedure TFormLecteurMP3.TrouverFichier(Chemin : String ; Masque : String);
    var
      Recherche : TSearchRec ;
      Trouver : Boolean;
     
    begin
      Try
        Trouver := (FindFirst(Chemin+Masque,FaAnyFile,Recherche) = 0) ;
        while (Trouver) do
        begin
          setlength(TableauMP3,NombreMp3+1); // tableau dynamique car on ne connait pas le nombre de MP3
          TableauMP3[NombreMp3].Chemin := (Chemin+Recherche.Name);  // chemin + le nom
          TableauMP3[NombreMp3].MP3 := copy(Recherche.Name,1,Length(Recherche.Name)-4);  // le nom sans ".mp3"
          inc(NombreMp3); // connaitre le nombre de MP3 trouvés
          Trouver := (FindNext(Recherche) = 0) ;
        end;
      Finally
        FindClose(Recherche) ; { <= IMPERATIF pour libérer ressources Win32 }
      end;
    end;

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    le code d'un explorateurqui peut faire ton bonheur (j'éspère...)

    unit1.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #include <stdio.h>
    #include <dir.h>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //------------------------------------------------------------------------------
    void __fastcall TForm1::Quitter1Click(TObject *Sender)
    {
    Form1->Close();
    }
    //---------------------------------------------------------------------------
    AnsiString FullPath(TTreeNode * Noeud)
    {
    AnsiString Chemin = Noeud->Text;
    TTreeNode *N1;
    N1 = Noeud;
    while(N1->Level>0)
            {
            N1 =N1->Parent;
            Chemin = N1->Text + "\\" + Chemin ;
            }
    return Chemin;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ListeLecteurs()
    {
     
    TTreeNodes *Ns;
    TTreeNode * Noeud;
    //TTreeNode * Noeud1;
    AnsiString C;
    int n1=0;
    TSearchRec  F;
    int g;
    AnsiString v;
    while (n1 < TreeView1->Items->Count)
            {
               Noeud = TreeView1->Items->Item[n1];
               v = FullPath( Noeud) + "\\";
               if(!chdir (v.c_str()))
               {                                        
               int done;
               done = FindFirst("*",faDirectory,F);
                    while (!done)
                            {
                            if ((F.Attr & faDirectory) && (F.Name !=".") && F.Name != "..")
                                    {
                                    TreeView1->Items->AddChild  (Noeud, F.Name);
     
                                    }
                            done = FindNext(F);
                            }
                StatusBar1->Panels->Items[0]->Text = v;
                StatusBar1->Refresh();
               }
               else
               {
                StatusBar1->Panels->Items[0]->Text = v;
               }
               n1++;
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Lirelarborescence1Click(TObject *Sender)
    {
    TreeView1->Items->Clear();
    TTreeNode *Noeud;
    TreeView1->Items->Add (NULL,(Edit1->Text ));
    ListeLecteurs();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::TreeView1Click(TObject *Sender)
    {
    if( TreeView1->Selected!=NULL)
            {
            StatusBar1->Panels->Items[0]->Text = IntToStr(TreeView1->Selected->AbsoluteIndex) + ": " + FullPath(TreeView1->Selected);
            ListView1->Items->Clear();
     
            TSearchRec  F;
            TTreeNode * Noeud;
            Noeud =TreeView1->Selected;
            TListItem *L;
            AnsiString v;
            v = FullPath( Noeud) + "\\";
            if(!chdir (v.c_str()))
               {
               int done;
               done = FindFirst("*",faAnyFile,F);
                    while (!done)
                            {
                            if (!(F.Attr & faDirectory))
                                    {
                                    L = ListView1->Items->Add();
                                    L->Caption = FullPath(Noeud);
                                    L->SubItems->Add( F.Name);
                                    }
                             done = FindNext(F);
                            }
                }
            }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Listerlesfichiers1Click(TObject *Sender)
    {
    int max = TreeView1->Items->Count;
    TTreeNode *Noeud;
    TSearchRec  F;
    TListItem *L;
    AnsiString v;
    ListView1->Items->Clear();
    for (int i = 1; i< TreeView1->Items->Count ; i++)
            {
               Noeud = TreeView1->Items->Item[i];
               v = FullPath( Noeud) + "\\";
               if(!chdir (v.c_str()))
               {
               int done;
               done = FindFirst("*",faAnyFile,F);
                    while (!done)
                            {
                            if (!(F.Attr & faDirectory) &&
                                 (AnsiUpperCase(ExtractFileExt(F.Name))=="." + AnsiUpperCase(Edit2->Text)))
                                    {
                                    L = ListView1->Items->Add();
                                    L->Caption = FullPath(Noeud);
                                    L->SubItems->Add( F.Name);
                                    }
                             done = FindNext(F);
                            }
                StatusBar1->Panels->Items[0]->Text = v;
                StatusBar1->Refresh();
                }
            }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Icnes1Click(TObject *Sender)
    {
    ListView1->ViewStyle=vsIcon;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Dtails1Click(TObject *Sender)
    {
    ListView1->ViewStyle = vsReport;
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Ouvrir1Click(TObject *Sender)
    {
     
    AnsiString Commande = """E:\\Program Files\\AutoCAD LT 98\aclt.exe """;
    if (ListView1->Selected != NULL)
       {
       Commande = """" + ListView1->Selected->Caption + "\\"
                   + ListView1->Selected->SubItems->Strings[0] + """";
       int rc = (int) ShellExecute ( Application->Handle,"open",Commande.c_str(),NULL,NULL,SW_SHOWDEFAULT);
       if (rc <= 32)
          {
          if (rc == SE_ERR_NOASSOC)
             Application->MessageBox("Aucun programme n'est associé à ce fichier!","Erreur DWG-catalogue", MB_OK | MB_ICONERROR);
          else
             Application->MessageBox("L'application associée n'a pu être ouverte!","Erreur DWG-catalogue", MB_OK | MB_ICONERROR);
          }
       }
    }
    //---------------------------------------------------------------------------
    unit1.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <ExtCtrls.hpp>
    #include <Menus.hpp>
    #include <ImgList.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TTreeView *TreeView1;
            TMainMenu *MainMenu1;
            TListView *ListView1;
            TStatusBar *StatusBar1;
            TSplitter *Splitter1;
            TMenuItem *Fichier1;
            TMenuItem *Quitter1;
            TMenuItem *Outils1;
            TMenuItem *Lirelarborescence1;
            TMenuItem *Listerlesfichiers1;
            TPopupMenu *PopupMenu1;
            TMenuItem *Dtails1;
            TMenuItem *Icnes1;
            TMenuItem *Ouvrir1;
            TImageList *ImageList1;
            TImageList *ImageList2;
            TPanel *Panel1;
            TEdit *Edit1;
            TLabel *Label1;
            TEdit *Edit2;
            TLabel *Label2;
            void __fastcall Quitter1Click(TObject *Sender);
            void __fastcall Lirelarborescence1Click(TObject *Sender);
            void __fastcall TreeView1Click(TObject *Sender);
            void __fastcall Listerlesfichiers1Click(TObject *Sender);
            void __fastcall Icnes1Click(TObject *Sender);
            void __fastcall Dtails1Click(TObject *Sender);
            void __fastcall Ouvrir1Click(TObject *Sender);
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
            __fastcall TForm1(TComponent* Owner);
            void __fastcall TForm1::ListeLecteurs();
     
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    j'ai mis le fichier en tête pour que tu ais les éléments de la feuille

    [version C++ Builder 5]

Discussions similaires

  1. Problème avec explorer à l'ouverture des dossiers
    Par anouchkaya dans le forum Windows XP
    Réponses: 17
    Dernier message: 01/07/2008, 15h30
  2. Réponses: 3
    Dernier message: 06/10/2007, 08h24
  3. ouverture de dossier/fichier dans un sub
    Par apprenti doc dans le forum Langage
    Réponses: 11
    Dernier message: 09/05/2007, 21h18
  4. problème d'ouverture de dossiers
    Par C_Chaou dans le forum Windows XP
    Réponses: 4
    Dernier message: 07/05/2007, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo