bonjour, je souhaite recuperer la taille d'un fichier! tous simplement.
impossible de trouver ca! (aucune source)
merci d'avance, merci!
bonjour, je souhaite recuperer la taille d'un fichier! tous simplement.
impossible de trouver ca! (aucune source)
merci d'avance, merci!
Essayes FileSize
Dans la faq Delphi, il y a aussi des exemples qui font appel à l'api windows.
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.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
• 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;
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![]()
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![]()
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...
à+
Envoyé par Fabrice ROUXEL 1
![]()
Yep !Nan ! 2,147 et quelques (la limite positive d'un integer, quoi) gig's !type Integer et ne peut donc pas retourner une taille de fichier > à 4Go...![]()
La preuve, la soluce à FabriceRouxel1 me retourne -1410,57 MB sur un fichier de 2,62 gig's.
Mes 2 cts,
--
jp
-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...
Partager