[Delphi] Récupérer la taille d'un (gros) fichier

Récupérer la taille d'un (gros) fichier [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 09-05-2003 à 18:25:31    

Comment faire pour récupérer la taille de "c:\monfichier.ext", si possible dans un Int64 (où, si c'est trop dur, dans un longword) ?


Message édité par Kyle_Katarn le 09-05-2003 à 18:26:17
Reply

Marsh Posté le 09-05-2003 à 18:25:31   

Reply

Marsh Posté le 12-05-2003 à 15:53:05    

Je souhaiterais savoir exactement la même chose..
 
SVP! Merci.

Reply

Marsh Posté le 12-05-2003 à 16:02:09    

donc .... UP !

Reply

Marsh Posté le 12-05-2003 à 16:03:12    

tu l'ouvres avec un TFileStream ou THandleStream * puis tu récupères la taille via .Size
 
* : THandleStream si comme moi tu ouvres ton fichier avec la fonction CreateFile de l'API Windows. Tu peux aussi utiliser GetFileSize à la place du THandleStream, mais il te renvoie la taille sur deux DWORD, ce qui est pas très pratique :D


Message édité par antp le 12-05-2003 à 16:05:09

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 16:04:49    

J'ai vu un truc ici :
http://www.delphifr.com/article.aspx?Val=254
 
Sinon, apparemment il y a une fonction FileSize
mais le fichier doit être ouvert ..??  :??:  
 

Reply

Marsh Posté le 12-05-2003 à 16:05:53    

Ndmax a écrit :

Sinon, apparemment il y a une fonction FileSize


 
il a précisé qu'il le voulait sur un Int64 :D (donc possibilité de lire les tailles > 2 Go)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 16:08:06    

antp a écrit :


 
il a précisé qu'il le voulait sur un Int64 :D (donc possibilité de lire les tailles > 2 Go)


 
Merci ANTP !
 
(j'avais trouve avec FindFirst entre temps qui semble donner la même chose, 2 32 bits (high/low) à combiner pour faire un 64)

Reply

Marsh Posté le 12-05-2003 à 16:11:13    

Ha ? possible, c'est vrai que c'est peut-être plus simple comme méthode alors...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 16:13:48    

Désolé antp..
 
Kyle_Katarn >> c'est quoi ta méthode ??

Reply

Marsh Posté le 12-05-2003 à 19:09:00    

Code :
  1. function TailleFichier(fic:string):Int64;
  2. var
  3.   rec:TSearchRec;
  4. begin
  5.   if FindFirst(fic,faAnyFile,rec)=0 then
  6.     Result:=Int64(rec.FindData.nFileSizeLow)
  7.   else
  8.     Result:=0;
  9. end;


 
Là je ne prend que le 32bits low, il faudrait multiplier par 2^32*le high

Reply

Marsh Posté le 12-05-2003 à 19:09:00   

Reply

Marsh Posté le 12-05-2003 à 19:42:44    


Et un leak, un  :fou:
 
FindFirst -> FindClose


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 12-05-2003 à 20:08:28    

Ouais puis le string qui est pas passé en const, et le formattage du code non conforme, c'est pas bien tout ça :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 20:11:56    

ok, je débute !

Reply

Marsh Posté le 12-05-2003 à 22:00:11    

OK, merci!
Moi j'ai utilisé rec.Size tout simplement
car mes fichiers sont très en dessous de
la limite des 2Go pour les Integer.
 
Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed