Bonjour a tout les developpeurs,
Comment peu t'on compter le nombre de dossier vide dans toute la racine du C:\.
il y a t'il une fonction existante ?
un grand merci de votre réponse.![]()
Bonjour a tout les developpeurs,
Comment peu t'on compter le nombre de dossier vide dans toute la racine du C:\.
il y a t'il une fonction existante ?
un grand merci de votre réponse.![]()
bonjour,
a part parcourir l'ensemble des fichiers/dossiers avec findfirst / FindNext / Findclose, je ne vois pas
jerome
Exemple avec cette function mais a l'inverse au lieu d'affiché les fichiers je voudrai qui m'affiche que les répertoires vide
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 // Procédure pour compter les fichiers Function CompteFichiers(Chemin:String):Integer; Var S: TSearchRec; Begin Chemin := IncludeTrailingPathDelimiter(Chemin); Result := 0; If FindFirst(Chemin + '*.*' ,faAnyFile ,S) = 0 Then Begin Repeat If (S.Name <> '.') And ( s.Name <> '..') Then Begin If (S.Attr And faDirectory) <> 0 Then Result := Result+CompteFichiers(Chemin+S.FindData.cFileName) Else Inc(Result); End; // Recherche du suivant Until FindNext(S)<>0; FindClose(S); End; End;
un dossier vide est il considéré vide si il contient un dossier vide ?
ici, la fonction liste les dossiers n'ayant pas de fichiers à l'intérieur de l'arborescence (donc : dossier vide dans un dossier => les 2 dossiers apparaitront) .
à affiner en fonction de tes besoins
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 Function fListeDossierVide(Chemin: String; List: TStrings): Boolean; Var S: TSearchRec; Begin // par défaut, on considére le dossier vide, sauf si il y a un fichier dedans Chemin := IncludeTrailingPathDelimiter(Chemin); Result := true; If FindFirst(Chemin + '*.*', faAnyFile, S) = 0 Then Begin Repeat If (S.Name <> '.') And (S.Name <> '..') Then Begin If (S.Attr And faDirectory) <> 0 then begin Result := fListeDossierVide(Chemin + S.Name, List); if Result then List.Add(Chemin + S.Name); Application.ProcessMessages; end else begin // fichier trouvé => dossier non vide Result := false; end; End; // Recherche du suivant Until FindNext(S) <> 0; FindClose(S); End; End;
utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part fListeDossierVide(Edit1.Text, ListBox1.Items)
Exemple
- C:\Programme\ (Dossier sans fichier qui contien un dossier vide)
- C:\Programme\Projet\ (Dossier vide)
-----------------------------------
Mon but c'est d'afficher que le dossier vide en fin d'adresse
Exemple : C:\Programme\Projet\
Sans avoir C:\Programme\
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 Function fListeDossierVide(Chemin: String; List: TStrings): Boolean; Var S: TSearchRec; Begin Chemin := IncludeTrailingPathDelimiter(Chemin); Result := true; If FindFirst(Chemin + '*.*', faAnyFile, S) = 0 Then Begin Repeat If (S.Name <> '.') And (S.Name <> '..') Then Begin Result := false; If (S.Attr And faDirectory) <> 0 then begin if fListeDossierVide(Chemin + S.Name, List) then List.Add(Chemin + S.Name); Application.ProcessMessages; end; End; // Recherche du suivant Until FindNext(S) <> 0; FindClose(S); End; End;
Merci jeromelef2 de ton aide sa marche nikel![]()
Partager