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

Langage Delphi Discussion :

Recherche de fichiers dans des sous répertoires


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Recherche de fichiers dans des sous répertoires
    Bonjour, je viens demander votre aide parce que je cale sur un problème .
    J'ai repris un morceau de code de la FAQ, celui qui permet de rechercher des fichiers. Je l'ai adapté à mes besoins, mais ça ne marche pas à 100 %

    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
    procedure GetFiles(path, ext:String; list: TStrings); 
    Var S:TSearchRec;
    Begin
      path:=IncludeTrailingPathDelimiter(path);
      ext := '*.'+ext;
      If FindFirst(path+ext,faAnyFile,S)=0
      Then Begin
        Repeat
          If (S.Name<>'.')And(s.Name<>'..')
          Then Begin
            If (S.Attr And faDirectory)<>0
              Then getFiles(path+S.FindData.cFileName, ext, list)
              Else begin
                list.Add(S.Name);
              end;
          End;
        Until FindNext(S)<>0;
        FindClose(S);
      End;
    End;
    Je voudrais, par exemple, lister tous les fichiers lnk qui se trouvent dans le menu 'Programmes' du bouton démarrer. Mais ma fonction ne descends pas dans les sous-répertoires !
    Pouvez-vous m'aider ?

    Je vous remercie

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Oui, je me suis d'ailleurs inspiré de ça. Mais dans la source de Nono, il fait une recherche sur tous les fichiers (*.*), or moi je ne le fais qu'avec *.lnk

    En fait, je crois que seul *.* permet de lister les répertoires, mais je vois pas comment modifier ma fonction, puisque je dois faire une recherche sur tous les sous-répertoires avant d'en refaire une pour lister mes fichiers...

    Comme c'est la première fois que j'utilise ce genre de fonction, je m'y perd un peu

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Etrange ....
    Tu es sûr qu'il passe dans le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (S.Attr And faDirectory)<>0

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    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
    19
    20
    21
    procedure GetFiles(path, ext:String; list: TStrings); 
    Var S:TSearchRec;
    Begin
      path:=IncludeTrailingPathDelimiter(path);
      ext := '.'+ext;
      If FindFirst(path+'*.*',faAnyFile,S)=0
      Then Begin
        Repeat
          If (S.Name<>'.')And(s.Name<>'..')
          Then Begin
            If (S.Attr And faDirectory)<>0
              Then getFiles(path+S.FindData.cFileName, ext, list)
              Else begin
                  if AnsiLowerCase(ExtractFileExt(s.Name)) = AnsiLowerCase(ext) then
                     list.Add(S.Name);
              end;
          End;
        Until FindNext(S)<>0;
        FindClose(S);
      End;
    End;

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Pour moi, au contraire c'est normal que ça ne fonctionne pas... A moins d'avoir un répoertoire qui s'appelle XXXXX.lnk, ça ne marchera pas...
    A la limite, tu peux faire un petit test de rien du tout pour savoir si l'extension est la bonne avec ExtractFileExt
    [edit]
    Grillé par Lung

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,
    le problème vient peut être de votre variable ext

    normalement vous devez rechercher '*.*' de façon a voir tous les sous-repertoire, puis tester les extention des fichiers pour savoir si le fichier est a ajouter a la liste.

    si votre recheche est sur "'*.' + ext" vous rechercher les fichiers et les sous-répertoire limité par votre filtre.

  8. #8
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 670
    Points : 7 040
    Points
    7 040
    Par défaut
    Citation Envoyé par Pedro
    [edit]
    Grillé par Lung

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Merci à tous pour votre aide .
    Je n'avais pas vu cette piste là. Je vais l'essayer dès que possible.

    Je vous embrasse tous, et merci encore !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA Recherche de Fichier dans des sous répertoires
    Par GuiJenn34 dans le forum Général VBA
    Réponses: 12
    Dernier message: 09/06/2015, 14h14
  2. [XL-2003] recherche un fichier dans des sous répertoire et recopier son contenu
    Par hallscar dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/12/2011, 20h30
  3. recherche de fichier dans des sous repertoires
    Par Abou Zar dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2010, 09h48
  4. compte de fichiers contenus dans des sous répertoires
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2008, 08h58
  5. Suppression de fichiers dans des sous-répertoires
    Par astrolane dans le forum Langage
    Réponses: 2
    Dernier message: 07/09/2007, 15h22

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