GARANTIR DESCONTO

Fórum como descobrir o tamanho de um arquivo texto #369567

02/04/2009

0

como faço para descobrir o tamanho (em byte) de um arquivo texto?


Pestana_

Pestana_

Responder

Posts

02/04/2009

Marcosrocha

Não estou com o Delphi aqui, mas é algo mais ou menos do tipo:
with TFileStream.Create(´C:\Windows\explorer.exe´, fmOpenRead or fmShareExclusive) do
try
  Edit1.Text := IntToStr(Size);
finally
  Free;
end;



Responder

Gostei + 0

03/04/2009

Pestana_

Primeiramente muito obrigado por responder Marcos!

eu estava olhando este comando no help do Delphi, mas eu não entendi uma coisa, o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.


Atenciosamente,
Pestana.


Responder

Gostei + 0

03/04/2009

Lehapan

Cara Pestana_

verifique se é isto que você quer.

procedure TForm1.Button1Click(Sender: TObject);
var
   f: file of Byte;
   size: Longint;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    try
      size := FileSize(f);
      Showmessage( ´File size in bytes: ´ + IntToStr(size) );
    finally
      CloseFile(f);
    end;
  end;
end;


espero ter ajudado


Responder

Gostei + 0

03/04/2009

Marcosrocha

o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Bastava você ter feito um teste com um arquivo grande para saber.
Não, o código não carrega inteiro para a memória. Ele abre o arquivo colocando na estrutura TFileStream todos os dados sobre o arquivo e posicionando o ponteiro de dados na posição 0, ou seja, se você quiser ´ler´ o arquivo, teria mais coisa a fazer.
A título de informação, executo essa rotina em arquivos com mais de 400Mb e pegar o tamanho do arquivo não demora nem 1 milisegundo.


Responder

Gostei + 0

03/04/2009

Pestana_

[quote:ef3c115a95=´Pestana_´]o sistema carrega o arquivo na memoria? digo isso porque eu preciso saber somente qual é tamanho do arquivo em bytes, sem carregar na memoria, algo do tipo acessando diretamente o arquivo.
Bastava você ter feito um teste com um arquivo grande para saber.
Não, o código não carrega inteiro para a memória. Ele abre o arquivo colocando na estrutura TFileStream todos os dados sobre o arquivo e posicionando o ponteiro de dados na posição 0, ou seja, se você quiser ´ler´ o arquivo, teria mais coisa a fazer.
A título de informação, executo essa rotina em arquivos com mais de 400Mb e pegar o tamanho do arquivo não demora nem 1 milisegundo.[/quote:ef3c115a95]

Marcos você tem razão é isso mesmo, resolveu meu problema, muito obrigado pela ajuda!


Responder

Gostei + 0

03/04/2009

Pestana_

Cara Pestana_ verifique se é isto que você quer.
procedure TForm1.Button1Click(Sender: TObject);
var
   f: file of Byte;
   size: Longint;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    try
      size := FileSize(f);
      Showmessage( ´File size in bytes: ´ + IntToStr(size) );
    finally
      CloseFile(f);
    end;
  end;
end;
espero ter ajudado


lehapan muito obrigado pela ajuda, a sua solução tambem resolve o problema, só uma dúvida o AssignFile tambem é parecido TFileStream ele não carrega o arquivo para a memoria, ele somente associa com o arquivo, é isso mesmo?


Responder

Gostei + 0

03/04/2009

Pestana_

não querendo incomodar, estou tentando entender qual a diferença do AssignFile e do TFileStream?

pelo que eu entendi, os dois aceita qualquer tipo de arquivo e abre e escreve no arquivo externo, é isso mesmo ou estou enganado? então qual a diferença?


Obrigado mais uma vez!
Pestana.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar