Rubem a classe TSearchRec retorna o tamanho do arquivo de uma maneira 
muito simples.

var
  vSearchRec : TSearchRec;

begin

   FindFirst(Application.ExeName, 0, vSearchRec);
   ShowMessage(FloatToStr(vSearchRec.Size / 1024) + ' Kb');

end;

Mas o que me chamou muita atenção foi este comentário.
- O tamanho do arquivo pode ser maior que 2 GB.

Quando ocorre esta limitação ???

Eduardo

Rubem Nascimento da Rocha escreveu:
>
> // Esta função determina o tamanho de um arquivo em bytes.
> // O tamanho do arquivo pode ser maior que 2 GB.
> function GetFileSizeEx(const FileName: String): Int64;
> var
> lHandle: Windows.THandle;
> lFindData: Windows.TWin32FindData;
> begin
> // Define retorno default
> Result := 0;
>
> // Obtém handle do arquivo
> lHandle := Windows.FindFirstFile(PChar(FileName), lFindData);
> if lHandle <> INVALID_HANDLE_VALUE then
> begin
> Windows.FindClose(lHandle);
> Int64Rec(Result).Lo := lFindData.nFileSizeLow;
> Int64Rec(Result).Hi := lFindData.nFileSizeHigh;
> end;
> end;
>
> // Copia o arquivo fonte para um arquivo destino, preservando sua data de
> modificação.
> procedure CopyFile(const Source, Dest: string);
> var
> SourceStream, DestStream: Classes.TFileStream;
> begin
> DestStream := nil;
> // Abre streams de dados para os arquivos de origem e destino
> SourceStream := Classes.TFileStream.Create(
> Source, SysUtils.fmOpenRead or SysUtils.fmShareDenyWrite
> );
> try
> DestStream := Classes.TFileStream.Create(
> Dest, Classes.fmCreate or SysUtils.fmShareExclusive
> );
> try
> // Copia arquivo da origem até o destino
> DestStream.CopyFrom(SourceStream, SourceStream.Size);
>
> // Define a data de modificação do arquivo destino para a mesma do
> arquivo origem
> SysUtils.FileSetDate(
> DestStream.Handle, SysUtils.FileGetDate(SourceStream.Handle)
> );
> finally
> // Fecha arquivo destino
> DestStream.Free;
> end;
> finally
> // Fecha arquivo origem
> SourceStream.Free;
> end;
> end;
>
> Sds.,
> Rubem Rocha
> Manaus, AM
>
> __________________________________________________________
> MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br 
> <http://search.msn.com.br>
>
>  

Responder a