Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Obtendo o tamanho de um arquivo em bytes, KB, MB ou GB


SubCash
 Compartilhar

Posts Recomendados

 

Em algumas situações precisamos obter o tamanho de um arquivo em bytes e, se necessário, converter este valor em bytes para KB, MB ou GB. Esta dica mostra como isso pode ser feito. Aqui nós temos duas funções. A função TamanhoArquivoBytes() recebe o caminho e nome de um arquivo e retorna seu tamanho em bytes. Já a função TamanhoArquivoFormatado() recebe um valor em bytes e devolve uma string formatada.

 

Veja o exemplo completo:

 

// permite formatar o tamanho de um arquivo em bytes em // Kb, Mb ou Gb function TamanhoArquivoFormatado(const bytes: Longint): string; const b = 1; // byte kb = 1024 * b; // kilobyte mb = 1024 * kb; // megabyte gb = 1024 * mb; // gigabyte begin if bytes > gb then Result := FormatFloat('#.## GB', bytes / gb) else if bytes > mb then Result := FormatFloat('#.## MB', bytes / mb) else if bytes > kb then Result := FormatFloat('#.## KB', bytes / kb) else Result := FormatFloat('#.## bytes', bytes); end; // função que permite obter o tamanho de um arquivo em bytes function TamanhoArquivoBytes(arquivo: string): Int64; var search_rec: TSearchRec; begin if FindFirst(arquivo, faAnyFile, search_rec) = 0 then Result := Int64(search_rec.FindData.nFileSizeHigh) shl Int64(32) + Int64(search_rec.FindData.nFileSizeLow) else Result := -1; FindClose(search_rec); end; procedure TForm1.Button1Click(Sender: TObject); var arquivo: string; begin // nome do arquivo que queremos obter o tamanho arquivo := 'C:\estudos_delphi\programa_vcl\arquivo.txt'; // exibe o resultado ShowMessage('O tamanho do arquivo é: ' + TamanhoArquivoFormatado(TamanhoArquivoBytes(arquivo))); end;

Note que aqui nós usamos o campo FindData da estrutura TSearchRec. Este campo contém informações adicionais sobre um arquivo, tais como a data e hora de criação do arquivo, data e hora do último acesso, etc. Porém, este campo é específico à plataforma Windows, o que pode resultar em um warning do tipo:

 

[DCC Warning] Unit1.pas(54): W1002 Symbol 'FindData' is specific to a platform

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

Link para o comentário
Compartilhar em outros sites

Tópico extremamente desorganizado, CTRL+C e CTRL+V, assim como todos os outros criados recentemente por você.

Tudo bem criar os tópicos, mas organize-os. Utilize as tags de PHP/Citação e formate melhor seus tópicos.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.