PDA

Ver la Versión Completa : Tamaño real de un Archivo


Lepe
23-06-2006, 13:15:33
Hay varias formas de obtener el tamaño de un archivo, pero algunas de ellas siguen en Delphi por compatibilidad y no nos dará el valor real cuando el archivo supera el valor máximo de un Integer, por ello, aquí se usa la API de windows para obtener incluso GigaBytes o TeraBytes.

Funcionará tanto con archivos pequeños, como con archivos grandes.

El truco 39 nos formatea el Tamaño de un archivo en MB, KB, etc, pues aquí tenemos el paso previo, obtener el tamaño real en bytes del susodicho archivo ;)

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

function GetSizeOfFile(const Filename:string): Int64;
var Sr:TSearchRec;
begin
try
if FindFirst(FileName,faAnyFile,sr) <> 0 then
raise Exception.Create('Archivo ' + FileName+' no encontrado');
Result:= sr.FindData.nFileSizeHigh * maxdword + sr.Finddata.nFileSizeLow;
finally
FindClose(sr);
end;
end;


Para usarlo:

ShowMessage(IntToStr(GetSizeOfFile('c:\Autoexec.bat')));


Saludos

Lepe
23-06-2006, 13:17:50
Usando el Truco 39:

ShowMessage(FormatFileSize(GetSizeOfFile('c:\pagefile.sys')));