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 :

Taille total des fichiers trouvé


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Taille total des fichiers trouvé
    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
    // Recherche fichier
    procedure ScanFile(Root, Extension: String; Item: TListItem; List: TListview);
    var
      Rec: TSearchRec;
    begin
      Root := IncludeTrailingPathDelimiter(Root);
      form1.Label1.Caption := (Root);
      Application.ProcessMessages;
      if FindFirst(Root + Extension, faAnyFile - faDirectory, Rec) = 0 then
        try
          repeat
          Item := List.Items.Add;
           with Item do
            begin
            List.SmallImages := form1.ImageList1;
            Caption :=  (Root);
            SubItems.Add (Rec.Name);
            SubItems.Add(SizeToStr(Rec.Size));
            end;
          until FindNext(Rec) <> 0;
          SendMessage(List.Handle,WM_VSCROLL,SB_BOTTOM,0);
        finally
          FindClose(Rec);
        end;
      if FindFirst(Root + '*.*', faDirectory, Rec) = 0 then
        try
          repeat
            if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name <> '.') and
              (Rec.Name <> '..') then
              ScanFile(Root + Rec.Name, Extension, Item,List);
          until FindNext(Rec) <> 0;
        finally
          FindClose(Rec);
        end;
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button1Click(Sender: TObject);
    var
     Item: TListItem;
     I : Integer;
    begin
     repeat
      for I := 0 to List2.Items.Count -1 do
        if List2.Items[I].Checked then
         begin
           ScanFile('C:\',List2.Items[I].Caption,Item,List1);
         end;
      Inc(I); // Extension suivante
     until I = List2.Items.Count;
    end;
    Bonjour a tous,

    Voila j'ai une procedure qui rechercher des fichiers par leur extension
    j'aimerai calculer la taille total des fichiers trouvé qui son afficher dans la list1
    puis convertir la taille totals des fichiers avec cette function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function SizeToStr( Size : Int64 ) : string;
    begin
        if Size >= $10000000000 then
          Result := Format('%.2f  To', [Size / $10000000000])
        else if Size >= $40000000 then
          Result := Format('%.2f  Go', [Size / $40000000])
        else if Size >= $100000 then
          Result := Format('%.2f  Mo', [Size / $100000])
        else if Size >= $400 then
          Result := Format('%.2f  Ko', [Size / $400] )
        else
          Result := Format('%d  Octets', [Size] );
    end;

    Merci de votre réponse

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Il doit suffire de parcourir la liste d'Items, en additionnant les SubItems adéquats (pb : comment les reconnaître ? par leur indice ?)

    Le plus simple (et rapide) est de faire le cumul pendant la recherche elle-même !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2012
    Messages : 142
    Par défaut Re
    BEGIN [^^happy17]

    Comment optenir la taille totale des fichiers trouvé ?



    Code pas : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    // Conversion
    Function SizeToStr( Size : Int64 ) : string;
    begin
        if Size >= $10000000000 then
          Result := Format('%.2f  To', [Size / $10000000000])
        else if Size >= $40000000 then
          Result := Format('%.2f  Go', [Size / $40000000])
        else if Size >= $100000 then
          Result := Format('%.2f  Mo', [Size / $100000])
        else if Size >= $400 then
          Result := Format('%.2f  Ko', [Size / $400] )
        else
          Result := Format('%d  Octets', [Size] );
    end;
     
    // Recherche fichier
    Function RechFile(Root, Extension: String; Item: TListItem; List: TListview) : String;
    var
      Rec: TSearchRec;
      ToSize : Int64; // <--- 
    begin
      ToSize := 0; // <--- ( MON PROBLEME )
      Root := IncludeTrailingPathDelimiter(Root);
      Application.ProcessMessages;
      if FindFirst(Root + Extension, faAnyFile - faDirectory, Rec) = 0 then
        try
          repeat
          Item := List.Items.Add;
           with Item do
            begin
            Caption :=  (Root); // Chemin
            SubItems.Add (Rec.Name); // Nom du fichier
            ToSize := ToSize + Rec.Size; // <--- ( Addition ) 
            SubItems.Add(SizeToStr(Rec.Size)); // Taille du fichier
            end;
          until FindNext(Rec) <> 0;
        finally
          FindClose(Rec);
        end;
      if FindFirst(Root + '*.*', faDirectory, Rec) = 0 then
        try
          repeat
            if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name <> '.') and
              (Rec.Name <> '..') then
              RechFile(Root + Rec.Name, Extension, Item,List);
          until FindNext(Rec) <> 0;
        finally 
          FindClose(Rec);
        end;
      Result := SizeToStr(ToSize); // <--- ( Conversion ) 
    end;
     
    // List2 = Liste des extensions
    //  *.ini
    //  *.pas
    //  *.txt
    //  ...
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
     Item1: TListItem;
     I : Integer;
    begin // List2 = Liste des extensions
      for I := 0 to List2.Items.Count -1 do
        if List2.Items[I].Checked = true then
         begin
           ToSize.Caption := RechFile('C:\',List2.Items[I].Caption,Item1,List1);
         end;
    end;

    Merci de votre réponse.

    End;

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Il suffit d'ajouter un paramètre TotalSize (passé en var) à la procédure Scanfile, et qui sera incrémenté de Rec.Size lors de chaque ajout d'un Item :

    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
    procedure ScanFile(Root, Extension: String; Item: TListItem; List: TListview; var TotalSize: int64);
    var
      Rec: TSearchRec;
    begin
      Root := IncludeTrailingPathDelimiter(Root);
      form1.Label1.Caption := (Root);
      Application.ProcessMessages;
      if FindFirst(Root + Extension, faAnyFile - faDirectory, Rec) = 0 then
        try
          repeat
          Item := List.Items.Add;
           with Item do
            begin
            List.SmallImages := form1.ImageList1;
            Caption :=  (Root);
            SubItems.Add (Rec.Name);
            SubItems.Add(SizeToStr(Rec.Size));
            Inc(TotalSize, Rec.Size);
            end;
          until FindNext(Rec) <> 0;
          SendMessage(List.Handle,WM_VSCROLL,SB_BOTTOM,0);
        finally
          FindClose(Rec);
        end;
      if FindFirst(Root + '*.*', faDirectory, Rec) = 0 then
        try
          repeat
            if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name <> '.') and
              (Rec.Name <> '..') then
              ScanFile(Root + Rec.Name, Extension, Item,List, TotalSize);
          until FindNext(Rec) <> 0;
        finally
          FindClose(Rec);
        end;
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. Script affichant la taille totale des fichiers d'un repertoire
    Par matdu27 dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 28/07/2012, 20h21
  2. Réponses: 8
    Dernier message: 10/10/2008, 20h46
  3. Réponses: 1
    Dernier message: 18/08/2008, 05h28
  4. Pb taille sur des fichiers
    Par cyborg123 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 24/04/2008, 13h34
  5. [CKEditor] taille maximale des fichiers uploadés
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 03/12/2006, 11h38

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