function TForm1.TamanhoArquivo(Arquivo: string): Integer;
begin
with TFileStream.Create(Arquivo, fmOpenRead or fmShareExclusive) do
try
Result := Size;{resultado em bytes}
finally
Free;
end;
end;
Agora para mostrar um resultado, você pode adicionar à tela um componente OpenDialog e um Button, adicionando ao evento OnClick do button o seguinte código:
if OpenDialog1.Execute then
begin
ShowMessage('Tamanho do arquivo é '+FloatToStr(TamanhoArquivo(OpenDialog1.FileName)/1024));
end;
Agora simples, implemente a função nas suas rotinas de programação, deixando seus sistemas mais funcionais. Por ora seria isto, até a próxima.
Blog com atividades voltadas ao ambiente de desenvolvimento utilizando a ferramenta de linguagem Delphi. Ao visitar o blog, encontrará dicas úteis para seu dia-a-dia atualizadas diariamente.
quarta-feira, 21 de janeiro de 2009
Obtendo tamanho de arquivos
Alguma vez já pensou numa rotina para saber o tamanho de um arquivo? Bom, e isso é bem simples de fazer, com a declaração de uma única função já conseguimos resolver nosso problema, veja:
Assinar:
Postar comentários (Atom)
6 comentários:
Dois comentários.
1 - o Size do FileStream é um integer de 64bits, já o Integer normal é 32bits. Para arquivos maiores que 2gb se não me engano essa função não vai retornar o tamanho certo porque o resultado dela é Integer. Basta mudar o tipo do Result para Int64 que já resolve este problema.
2 - É possível saber o tamanho do arquivo sem ter que abrí-lo, assim economiza-se recursos. Basta usar a API FindFirst e brincar com a estrutura FindData que tem o tipo TWin32FindData. Nela tem o SizeLow e o SizeHigh, com ambos você consegue fazer um Int64 para retornar o tamanho do arquivo sem ter que abrí-lo.
Opa...
peguei o end. do seu blog pelo forum do imasters, eu fiz uma pergunta sobre SOAP/DataSnap...
vou acompanhar seu blog...acompanhe o meu tb:
devutils.blogspot.com
É sempre bom trocar informações.
Abraços.
Bom, eu analisei o código e gostaria de perguntar porque não usar os
FileSize()
SizeOf()
A função sizeof retorna o tamanho de armazenamento, em bytes de uma variável ou tipo. Muitas vezes, é útil saber exatamente o espaço de dados utilizado, principalmente quando se utilizam rotinas como GetMem.
Alguns tipos dão sempre o tamanho de um ponteiro, uma vez que eles são apenas isso - ponteiros para o tipo de dados onde são armazenados. Por exemplo strings.
Utilize o InstanceSize método para obter o tamanho de um objeto.
O FileSize por sua vez é uma função que retorna o tamanho de um arquivo aberto, porém antes de usá-lo, o arquivo deverá ser atribuído a um handle usando o AssignFile e abrir utilizando um Append. Tome cuidado no tipo da declaração de variáveis que receberão o resultado desta função. Veja comentário realizado neste post pelo Bruno.
Bom, acho que isso ajuda a esclarecer suas dúvidas. Abraços
Como faço para saber o tamanho de um arquivo. só que este arquivo estando na web.
ou seja, só em colocar a url EX. http://www.servidor.com.br/arquivo.exe e ai ele mi retorna o tamanho.
Olá gleury, segue resposta a sua pergunta em um novo post que fiz no blog, aliás, está um pouco mais complexo onde além de mostrar como obter o tamanho do arquivo, mostro como fazer o download e obter a taxa de transferência do mesmo. Segue link:
http://maikelscheid.blogspot.com/2010/10/download-de-arquivos-da-internet.html
Att
Maikel Scheid
Postar um comentário