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 :

Chemin d'acc�s des fichiers dans des sous rep


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Par d�faut Chemin d'acc�s des fichiers dans des sous rep
    Bonjour,

    Je cherche une petite solution pour obtenir le chemin d'acc�s de tous les fichiers d'un r�pertoire, ansi que ceux des fichiers contenus dans les sous dossiers de ce dossier source.

    J'ai lu cette methode
    http://c.developpez.com/faq/bcb/?pag...iersrepertoire

    J'ai adapt� un peu ca pour mettre les chemins d'acc�s des fichiers dans un vecteur.

    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
    void Enregistrement::Search(AnsiString FilePath, AnsiString source)
    {
      //************************************
      //  Permet de lister tous les fichiers d'un répertoire
      //************************************
      TSearchRec Infos_fichier;
      if (!FindFirst(source+"/*.*", faAnyFile, Infos_fichier))
     
      do
      {
          if (ExtractFileExt(Infos_fichier.Name).LowerCase() != ""
              &&
               ExtractFileExt(Infos_fichier.Name).LowerCase() != "."
              &&
               ExtractFileExt(Infos_fichier.Name).LowerCase() != ".."
               )
          {
          //Petit tour de pass pass pas beau  si on selectionne un disque dur
          vecFichiers.push_back(Infos_fichier.Name);
     
          if(source.Length() == 3)
           vecFichiers.push_back(source+Infos_fichier.Name);
          else
           vecFichiers.push_back(source+"\\"+Infos_fichier.Name);
          }
      }
      while(!FindNext(Infos_fichier));
     
      FindClose(Infos_fichier);
     
    }
    Mais avec ca je n'ai pas les chemins d'acc�s des fichiers des sous r�pertoires.

    Je pense qu'il faudrait une methode r�cursive, mais je ne maitrise pas le sujet.

    merci de votre aide.

  2. #2
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Par d�faut
    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
    void  Enregistrement::ListerFichiers(AnsiString NomRep, AnsiString extension, bool SousRep)
    {
     TSearchRec Rec;
     int trouve;
     
     if (NomRep.SubString(NomRep.Length(),1) !="\\") NomRep+="\\";
     trouve = FindFirst(NomRep+"*."+extension, faAnyFile, Rec);
     while (trouve == 0)
     {
      if((Rec.Name[1]!='.') && (Rec.Name[1]!='..') )
        vecFichiers.push_back(NomRep+Rec.Name);
     
      if ((Rec.Attr && faDirectory >0) && (Rec.Name[1] != '.') && (SousRep == true))
       ListerFichiers( NomRep+Rec.Name, extension, true);
      trouve = FindNext(Rec);
     }
     FindClose(Rec);
    }
    En fouillant dans les baffons du forum, j'ai presque trouv� mon bonheur

    Mais a cause de ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
      if((Rec.Name[1]!='.') && (Rec.Name[1]!='..') )
        vecFichiers.push_back(NomRep+Rec.Name);
    il me fait un warning
    [C++ Warning] enregistrement.cpp(43): W8068 Constant out of range in comparison

    Ensuite la j'ai tout ce que je fais, mais j'ai aussi les sous r�pertoires dans mon vector. je pensais donc mettre

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
      if((Rec.Name[1]!='.') && (Rec.Name[1]!='..') && (Rec.Name[1]!='') )
        vecFichiers.push_back(NomRep+Rec.Name);
     
    Mais alors ca plante
     
    [C++ Error] enregistrement.cpp(43): E2129 Character constant must be one or two characters long
     
    merci
    [/code]

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Par d�faut
    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
    void  Enregistrement::ListerFichiers(AnsiString NomRep, AnsiString extension, bool SousRep)
    {
     TSearchRec Rec;
     int trouve;
     
     if (NomRep.SubString(NomRep.Length(),1) !="\\") NomRep+="\\";
     trouve = FindFirst(NomRep+"*."+extension, faAnyFile, Rec);
     while (trouve == 0)
     {
      if(Rec.Attr == faArchive)
        vecFichiers.push_back(NomRep+Rec.Name);
     
      if ((Rec.Attr && faDirectory >0) && (Rec.Name[1] != '.') && (SousRep == true))
       ListerFichiers( NomRep+Rec.Name, extension, true);
      trouve = FindNext(Rec);
     }
     FindClose(Rec);
    }

  4. #4
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Citation Envoy� par Le Veilleur
    En fouillant dans les baffons du forum, j'ai presque trouv� mon bonheur

    Mais a cause de ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
      if((Rec.Name[1]!='.') && (Rec.Name[1]!='..') )
        vecFichiers.push_back(NomRep+Rec.Name);
    il me fait un warning
    [C++ Warning] enregistrement.cpp(43): W8068 Constant out of range in comparison
    Normal...Rec.Name[1] est un seul caract�re et t'es entrain de le comparer � '..' qui est deux chars.

  5. #5
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Par d�faut
    Citation Envoy� par Neo41
    Citation Envoy� par Le Veilleur
    En fouillant dans les baffons du forum, j'ai presque trouv� mon bonheur

    Mais a cause de ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
      if((Rec.Name[1]!='.') && (Rec.Name[1]!='..') )
        vecFichiers.push_back(NomRep+Rec.Name);
    il me fait un warning
    [C++ Warning] enregistrement.cpp(43): W8068 Constant out of range in comparison
    Normal...Rec.Name[1] est un seul caract�re et t'es entrain de le comparer � '..' qui est deux chars.
    Oui, je me suis rendu compte de cette bourde, alors j'ai mis ca a la place
    if(Rec.Attr == faArchive)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Script shell pour renommer des fichiers dans des sous r�p�rtoires
    Par ibuto dans le forum Shell et commandes GNU
    R�ponses: 2
    Dernier message: 25/12/2013, 20h52
  2. R�cup�rer des fichiers dans des repertoires et sous r�pertoires
    Par philcphilc dans le forum D�veloppement de jobs
    R�ponses: 4
    Dernier message: 05/09/2013, 19h37
  3. R�ponses: 12
    Dernier message: 11/05/2012, 11h17
  4. Creer des fichiers dans un sous repertoire
    Par maxmarie dans le forum Windows Mobile
    R�ponses: 4
    Dernier message: 16/11/2007, 15h30
  5. [VBA-E]Y-a-t-il des fichiers dans les sous-rep de mon rep ?
    Par Kaiba dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 27/04/2007, 22h28

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