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

 Delphi Discussion :

Afficher la taille d'un répertoire après l'avoir récupérée grâce à une fonction


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 50
    Par défaut Afficher la taille d'un répertoire après l'avoir récupérée grâce à une fonction
    Bonjour,

    Voila, je souhaite afficher (dans une ligne de memo ou dans un showmessage par exemple) la taille d'un dossier après avoir récupéré cette information grâce à la fonction suivante :

    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
    //FONCTION GETFILESIZE----------------------------------------------------------
    function GetFileSize(const APath: string): int64;
    //------------------------------------------------------------------------------
    var
      Sr : TSearchRec;
    begin
      if FindFirst(APath,faAnyFile,Sr)=0 then
      try
        Result := Int64(Sr.FindData.nFileSizeHigh) shl 32 + Sr.FindData.nFileSizeLow;
      finally
        FindClose(Sr);
      end
      else
        Result := 0;
    end;
    Je peut compiler le tout, je peut faire un GetFileSize d'un dossier, mais comment afficher cette valeur ensuite ?

    D'avance merci !

    P.S. -> j'ai trouvé cette fonction dans la F.A.Q Delphi du site, je ne sais pas si elle est parfaitement adaptée à mon souhait : afficher la taille d'un Dossier (répertoire).

  2. #2
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Text := IntToStr(GetFileSize(le chemin du dossier));
    Par exemple...
    si j'ai bien compris la question.

    André

  3. #3
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    Après vérification, ta fonction récupere la taille d'un fichier.
    Pour un dossier, emplois ceci:
    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
    function GetDirectorySize(const ADirectory: string): Integer;
    var
    Dir: TSearchRec;
    Ret: integer;
    Path: string;
    begin
       Result := 0;
       Path := ExtractFilePath(ADirectory);
       Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
       if Ret <> NO_ERROR then
          exit;
       try
          while ret=NO_ERROR do
          begin
             inc(Result, Dir.Size);
             if (Dir.Attr in [faDirectory]) and (Dir.Name[1] <> '.') then
                Inc(Result, GetDirectorySize(Path + Dir.Name + '\*.*'));
             Ret := Sysutils.FindNext(Dir);
          end;
       finally
          Sysutils.FindClose(Dir);
       end;
    end;

    Pour l'employer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Text := IntToStr(GetDirectorySize(le chemin du dossier));
    André

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 50
    Par défaut
    Sa marche super bien !

    Merci pour l'aide rapide et efficace.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 50
    Par défaut
    Je profite du topic pour vous poser une petite question supplémentaire :

    L'application que j'ai crée supprime les temporaires indiqués par l'utilisateur, cela fonctionne pas trop mal et j'en suis satisfait. Le programme test si les répertoirs existe, puis si c'est le cas, les vides.
    Les possibilités de suppression sont les suivantes :

    • C:\WINDOWS\Temp
    • C:\WINDOWS\Temporary Internet Files
    • C:\Documents and Settings\'+UserName +'\Local Settings\Temp
    • C:\WINDOWS\Downloaded Installations
    • C:\WINDOWS\Prefetch
    • C:\Documents and Settings\All Users\Local Settings\Temp
    • C:\Temp

    J'aimerais avoir vos propositions de suppression supplémentaires ! Je souhaite notament donner la possibilité de vider le cache java et les temporaires des navigateurs comme : firefox, opera, chrome...

    En résumé, avez-vous d'autres chemins d'accès à proposer ?
    D'avance merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    668
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 668
    Par défaut
    salut,
    J'aimerais avoir vos propositions de suppression supplémentaires !
    Tu peux ajouter par exemple:
    -C:\Documents and Settings\USER\Local Settings\Historique.
    -C:\Documents and Settings\USER\Cookies.
    -Effacement de la liste des documents récents de Windows.
    -Effacement de l'historique d'exécution de Windows.
    -Effacement du Presse-papiers de Windows.
    -...

    pour vider le cache de Internet Explorer, tu peux le faire ainsi:
    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
    implementation
     uses  WinInet;
     
    {$R *.dfm}
     
    procedure SuprimerCacheIE;
    var
      lpEntryInfo: PInternetCacheEntryInfo;
      hCacheDir: LongWord;
      dwEntrySize: LongWord;
    begin { Supprimer CacheIE }
      dwEntrySize := 0;
     
      FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
     
      GetMem(lpEntryInfo, dwEntrySize);
     
      if dwEntrySize>0 then
        lpEntryInfo^.dwStructSize := dwEntrySize;
     
      hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
     
      if hCacheDir<>0 then
      begin
        repeat
          DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
          FreeMem(lpEntryInfo, dwEntrySize);
          dwEntrySize := 0;
          FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
          GetMem(lpEntryInfo, dwEntrySize);
          if dwEntrySize>0 then
            lpEntryInfo^.dwStructSize := dwEntrySize;
        until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)
      end; { hCacheDir<>0 }
      FreeMem(lpEntryInfo, dwEntrySize);
     
      FindCloseUrlCache(hCacheDir)
    end; { Suprimer CacheIE }
    Pour l'appeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     SuprimerCacheIE;
    end;
    A+

    NABIL74

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 14/11/2014, 16h11
  2. Réponses: 3
    Dernier message: 27/02/2009, 13h57
  3. Réponses: 3
    Dernier message: 27/05/2008, 11h34
  4. Taille d'un répertoire
    Par Faiseur dans le forum Assembleur
    Réponses: 2
    Dernier message: 26/12/2004, 23h54
  5. taille d'un répertoire
    Par cd090580 dans le forum C++
    Réponses: 3
    Dernier message: 11/09/2004, 22h29

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