Compter le nombre de dossier vide

Résolu
SystemWin - 31 mai 2013 à 12:46
 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.

5 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
31 mai 2013 à 14:34
Salut,

regarde ceci
et ceci

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


[hr]@+Cirec
[hr]
3
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
31 mai 2013 à 14:04
Salut,
regardes du côté de TSearchRec, FindFirst, FindNext, FindClose, FileAttrs...
pour en sortir une fonction qui regarde si le dossier est vide
@+
0
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;
0
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\
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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;
0
Rejoignez-nous