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 :

recuperer la taille d'un fichier.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut recuperer la taille d'un fichier.
    bonjour, je souhaite recuperer la taille d'un fichier! tous simplement.

    impossible de trouver ca! (aucune source)

    merci d'avance, merci!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Essayes FileSize

    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
    39
    40
    41
    42
    43
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.DFM}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
       f: file of Byte;
       size : Longint;
       S: string;
    begin
       if OpenDialog1.Execute then
       begin
         AssignFile(f, OpenDialog1.FileName);
         Reset(f);
         size := FileSize(f);
         S := ' Taille du fichier ' + Format('%.2f',[(size / 1024)])+ ' ko';
         ShowMessage(s);
         CloseFile(f);
       end;
     end;
     
    end.
    Dans la faq Delphi, il y a aussi des exemples qui font appel à l'api windows.

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    • Il vaut mieux utiliser la solution suivante, surtout si tu veux pouvoir obtenir la taille de gros fichier > 4 Go (Int64) :
    http://delphi.developpez.com/faq/?pa...#taillefichier

    • Je connais une autre méthode sans ouvrir le fichier :
    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
    Function GetFileSizeEx(Const filename: String): Int64;
    Var
      SRec: TSearchrec;
      converter: Packed Record
        Case Boolean Of
          False: (n: int64);
          True: (low, high: DWORD);
      End;
    Begin
      Result := -1;
      If (FindFirst(filename, faAnyfile, SRec) = 0) Then Begin
        converter.Low := SRec.FindData.nFileSizeLow;
        converter.High := SRec.FindData.nFileSizeHigh;
        Result := converter.n;
        FindClose(SRec);
      End;
    End;

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 2
    Par défaut
    merci cela marche a merveille!

    c'est parfait. j'envie votre facilité a creer du code propre est efficace comme ca!
    je debute seulement le delphi, mais ca devrais venir

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Une autre solution à base de TSearchRec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var
      SearchRec: TSearchRec;
    begin
      if OpenDialog1.Execute then
        if FindFirst(OpenDialog1.FileName, faAnyFile, SearchRec) = 0 then
         ShowMessage(FloatToStrF(SearchRec.Size/1048576, ffFixed, 7, 2)+' MB');
      FindClose(SearchRec);
    end;

    N'oublies pas le tag

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Pour info, SearchRec.Size est du type Integer et ne peut donc pas retourner une taille de fichier > à 4Go... La solution est d'utiliser FindData (voir mon post ci-dessus). Les autres solutions sont devenues obsolètes selon moi...
    à+


    Citation Envoyé par Fabrice ROUXEL 1
    N'oublies pas le tag

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 126
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 126
    Par défaut
    Yep !
    type Integer et ne peut donc pas retourner une taille de fichier > à 4Go...
    Nan ! 2,147 et quelques (la limite positive d'un integer, quoi) gig's !

    La preuve, la soluce à FabriceRouxel1 me retourne -1410,57 MB sur un fichier de 2,62 gig's.

    Mes 2 cts,
    --
    jp

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    -Size est de type integer donc la taille max du fichier doit être < 2GO.

    -Bestiol dans la faq utilise GetFileSize soit un cardinal avec taille max = 4GO

    -La meilleur solution est celle présentée par Sub0 qui propose un Int64 en implementant une "union dans la terminologie du C".

    A ce propos la solution de Sub0 a toute sa place dans la FAQ...

Discussions similaires

  1. Recuperer la taille d'un fichier > 4Go avec la STL
    Par falcon74 dans le forum Langage
    Réponses: 13
    Dernier message: 05/10/2009, 12h30
  2. Recuperer la Taille d'un Fichier
    Par med_ellouze dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 14/08/2007, 12h48
  3. recuperer la taille d'un fichier
    Par opensource dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/06/2007, 16h33
  4. [VB6] [Réseau] Récupérer la taille d'un fichier avec inet
    Par pcpunch dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 20/02/2003, 21h38
  5. [VB6] [Fichier] Récupérer sa taille
    Par SpP dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/09/2002, 19h56

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