Compter le nombre de dossier vide [Résolu]

- - Dernière réponse :  SystemWin - 31 mai 2013 à 17:00
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 ?

Merci de votre réponse.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
34
3
Merci
Salut,

regarde ceci
et ceci

un mix des deux fera très bien l'affaire


[hr]@+Cirec
[hr]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
250
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
2 décembre 2019
5
0
Merci
Salut,
regardes du côté de TSearchRec, FindFirst, FindNext, FindClose, FileAttrs...
pour en sortir une fonction qui regarde si le dossier est vide
@+
Commenter la réponse de cs_yanb
0
Merci
Merci yanb de ta réponse,
Exemple avec cette function mais a l'inverse au lieu de compter les fichiers je voudrai compter les répertoires vide

// 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;
Commenter la réponse de SystemWin
0
Merci
Merci cirec pour les liens et de ton aide,
Function
Function ListeDossierVide(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
        If (S.Attr And faDirectory) <> 0 then
        begin
          Result := ListeDossierVide(Chemin + S.Name, List);
          if Result = true 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;

-----------------------------------------------------------------
Mon but c'est d'afficher que le dossier vide en fin d'adresse

Exemple :
- C:\MonProgramme\ (Dossier sans fichier qui contien un dossier vide)
- C:\MonProgramme\Projet\ ( Le dossier vide)

Affichage Memo : C:\MonProgramme\Projet\
Sans avoir C:\MonProgramme\
Commenter la réponse de SystemWin
0
Merci
Probléme résolu

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;
Commenter la réponse de SystemWin