begin process at 2010 02 10 12:23:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Fichier / Disque

 > 

Recupérer la taille d'un fichier de 3Go en nbr d'octets


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recupérer la taille d'un fichier de 3Go en nbr d'octets

jeudi 29 juillet 2004 à 18:11:33 | Recupérer la taille d'un fichier de 3Go en nbr d'octets

coopertel

Bonjour à tous,

Voilà mon problème :

J'ai un fichier de près de 3 Go (2.8 exactement).
Je désire connaître sa taille à l'octet près.
J'utilise pour cela (avec succès sur des fichiers plus petit) la fonction GetFileSize (qui renvoi au maximum un longint soit 2 milliard 100 millions en positif... soit 700 millions de moins que ce qu'il me faut pour stocker ma valeur...)

Chez MicroSoft, ils me disent d'utiliser GetFileSizeEx (mais cette fonction fonctionne uniquement sous win2000 et XP, or je suis sous le bon vieux NT 4.0 service pack 6 !!)

Bon voilà mon problème....

J'ai vu que FileSize (fct delphi) permet de renvoyer la taille d'un file of quelque chose...

Mais comme je fabrique des trucs génériques, ils doivent être capable de me donner une petite taille, comme une très grande taille, or si je fais un file of double word et FileSize, je serai baisse pour les fichiers de petites tailles....

Quelqu'un peut il appuyer sur l'interrupteur, c'est pas drôle d'éteindre la lumière !

A+

Merci

Coopertel.
vendredi 30 juillet 2004 à 12:06:25 | Re : Recupérer la taille d'un fichier de 3Go en nbr d'octets

japee

Membre Club Administrateur CodeS-SourceS
Qui peut le plus peut le moins...

A mon avis, tu n'as pas le choix :

Cardinal (étendue : 0..4294967295),
ou
Int64 (étendue : –2^63..2^63–1), le plus "confortable".

Bonne prog'
vendredi 30 juillet 2004 à 12:14:42 | Cardinal jusqu'a 4Go mais après ??

coopertel

Merci de ta réponse,

J'ai en effet mis le résultat de GetFileSize dans une variable de type Cardinal, je n'aurai pas de problème jusqu'a 4Go mais après je suis coincé...
Inutile de mettre le résultat de GetFileSize dans un INT64, la fonction ne renvoi qu'une valeur sur 32bits...
D'après l'API windows il existe une fonction GetFileSizeEx pour les fichiers "gros", mais elle tourne sous 2000 et je suis sous NT.

Donc je cherche une bidouille pour avoir la taille de mon fichier.

Quoi qu'il en soit j'avais sur les bras un fichier de 3Go donc Cardinal m'a temporairement sortie des ennuies...

Merci
vendredi 30 juillet 2004 à 12:58:50 | Re : Recupérer la taille d'un fichier de 3Go en nbr d'octets

japee

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bon, essaye donc cette "bidouille", vite fait pour répondre à ton problème.

J'utilise ici un TFileStream.

uses FileCtrl;

function GetFileSize(FileName: String): Int64;
var FS: TFileStream;
begin
Result := 0;
if not FileExists(FileName) then Exit;
try
FS := TFileStream.Create(FileName, fmOpenRead);
Result := FS.Size;
finally
FS.Free;
end;
end;


On peut vérifier que ça fonctionne en mettant sur sa fiche :

- 1 TLabel
- 1 TButton
- 1 TOpenDialog
- 1 TEdit

procedure TForm1.Button1Click(Sender: TObject);
var TailleFichier: Int64;
begin
if OpenDialog1.Execute then
begin
Edit1.Text := OpenDialog1.FileName;
TailleFichier := GetFileSize(OpenDialog1.FileName);
Label1.Caption := IntToStr(TailleFichier);
end;
end;


Bonne prog'

vendredi 30 juillet 2004 à 15:10:45 | TFileStream

coopertel

Okey,

Ca marche bien.
La propriété Size du TFileStream est un INT64... Donc Je crois que je n'aurai plus de problème de taille de fichier (quoi que à l'échelle informatique tous est possible très vite, même si hier c'est de la science fiction...)

A+

et merci de ton aide.

Coopertel
vendredi 30 juillet 2004 à 17:16:57 | Re : Recupérer la taille d'un fichier de 3Go en nbr d'octets

japee

Membre Club Administrateur CodeS-SourceS
Bah, avec un Int64, y'a encore de la marge, non ?
Quoique, avec la loi de Moore et toutes ces sortes de choses...

Pas de quoi, à +
mardi 20 décembre 2005 à 17:28:43 | Re : Recupérer la taille d'un fichier de 3Go en nbr d'octets

BeLZeL

La méthode dite précédemment est mauvaise dans certains cas.
L'ouverture de fichier fait perdre du temps (surtout si on ouvre un fichier distant, sur le réseau local).
De plus, la méthode est très lente si on veut faire un scan d'un répertoire.

Donc j'ai cherché et j'ai trouvé mieux :
http://delphi.developpez.com/faq/?page=fichier#taillefichier



function
TForm1.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;


Et si vous êtes déjà en train de scanner un répertoire avec un FindFirst, c'est encore plus simple. Utilisez directement votre TSearchRec :
ShowMessage ( IntToStr ( GetFileSize ( 'c:\windows\explorer.exe' ) ) );


Cette discussion est classée dans : fichier, taille, recupérer, nbr, 3go


Répondre à ce message

Sujets en rapport avec ce message

Récupérer la taille d'un fichier [ par cybersky ] slt a tous j'amerais savoir comment récupérer la taille exacte d'un fichier sur le net avec le composant httpcli de ICSmerci a tous Connaitre taille d'1 fichier avant téléchargement [ par costello ] Bonsoir, je développe actuellement un logiciel qui est amené à récupérer des fichiers stockés sur internet. J'utilise pour cela des composants Indy (I Fichier ressources et icônes [ par John Dogget ] Salut à tous.J'ai defini dans un fichier ressources plusieurs icônes. Quand je souhaite afficher une de ces icônes dans un composant image, la taille taille limite fichier ftp [ par pie ] Bonjour ,Sous delphi7 et les composants INDY ,mon client ftp arrete le téléchargement des que la taille atteint les 2 Go.Je pense que cela est du a la Comment connaître la taille d'un gros fichier ? [ par btruton ] Salut tout le monde,Je suis un nouveau membre et je débute sur Delphi.Je suis entrain de faire un petit programme :-) mais :-/ je bloque sur un petit Magnipuler des images [ par Descom_q ] Salut tout le monde:)! Je suis en train de faire une application qui redimentionne les image dans un fichier powerpoint. J'arrive à magnipuler la tail TfileListBox [ par cincap ] Bonjour,Désolé de revenir sur le sujet mais je n'ai pas encore eu de solution concrète à ce problème sans devoir utiliser un composant spécial.Avec un Import d'un fichier de taille fixe [ par hajerOnward ] Salut tout le mondeJe suis entrain de développer un module d?import sous dot net et Delphi 2005 et j?ai besoin de la grille qui fait l?import des fich La taille d'un fichier .txt [ par stigmate101 ] Salut à tous, Je chercher à connaitre la taille d'un fichier .txtMerci A+ Taille Maxi d'un BLOB [ par cybergod007 ] Bonjour!! Je veux stocker un fichier de taille enorme mais le serveur de base de donnèes est limité conçèrnant le champ BLOB. Est il possible qu'on pe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales