Bonsoir,
Je suis en ce moment en stage dans une SSII et je suis bloqué sur une parti de mon code.
Je dois lister dans une listbox (ou autres ce n'est pas vraiment le problème en fin de compte) tous les répertoires et sous repertoires d'un dossier.
Ce code je l'ai pris de la FAQ de developpez.com
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 procedure TForm1.Button1Click(Sender: TObject); Var Chemin : String; Info : TSearchRec; dir : string; i:integer; ext:string; NbCarExt:integer; test3:string; nomdossier:string; begin SelectDirectory('Selectionnez un dossier', '', Dir); Edit1.Text:=dir; { Pour être sur que la barre oblique finisse le nom du chemin } Chemin := IncludeTrailingPathDelimiter(Edit1.Text); { Recherche de la première entrée du répertoire } If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then Begin Repeat { Les fichiers sont affichés dans ListBox1 } { Les répertoires sont affichés dans ListBox3 } // le fichier n'est pas un repertoire donc =0 If (info.Name<>'.')And(info.Name<>'..') then begin If Not((Info.Attr And faDirectory)=0) Then ListBox3.Items.Add(Info.FindData.cFileName) Else ListBox1.Items.Add(chemin+Info.FindData.cFileName) end; { Il faut ensuite rechercher l'entrée suivante } Until FindNext(Info)<>0; { Dans le cas ou une entrée au moins est trouvée il faut } { appeler FindClose pour libérer les ressources de la recherche } FindClose(Info); End;
Seul soucis c'est que sa liste seulement les 1er sous répertoires...
Donc je me suis dis peut être la solution est la récursivité. Mais je ne vois pas comment la faire cette récursivité (j'ai beaucoup de mal dans ce domaine).
Donc quelqu'un pourrais me donner un petit coup de pouce , ou me proposer une autre solution ?
L'objectif étant d'avoir une liste quelque part de tous les sous répertoires d'un dossier.
Merci d'avance
PS: Oui il y a des variables qui servent surement à rien mais je nettoyerais après, disons que j'ai effectuer beaucoup de test sans avancez énormément...
Partager