GARANTIR DESCONTO

Fórum Pegar tamanho do arquivo #354869

05/03/2008

0

Estou fazendo uma ferramenta para realizar download de arquivos via ftp, gostaria de saber se tem como eu pegar o tamanho do arquivo em tempo real, estou usando dessa forma:

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
var
  TamanhoAtualArquivo: Longint;
  Arquivo: file of Byte;
begin
  AssignFile(Arquivo, ´c:\temp\Arquivo.exe´);
  Reset(Arquivo);

  TamanhoAtualArquivo := FileSize(Arquivo);

  Gauge1.Progress := TamanhoAtualArquivo;
end;


Repare que é no evento IdFTP1Work do Componente da indy

na linha Reset(Arquivo) ele da um erro:
I/O error 32.

eu teria que mudar?
Oq daria p fazer para corrigir?

vlw!!!


Luiz_aquino

Luiz_aquino

Responder

Posts

06/03/2008

Paullsoftware

Eu apenas copiei uma parte do meu atualizador, mais para retornar o tamanho de um arquivo antes de efetuar o download do mesmo, basta usar uma Variavel tipo LongWord por exemplo e usar o comando Size(ArquivoRemoto)...
    with IdFTPAtualiza do
    begin
      Host := ´ftp.sitedaempresa.com.br´;
//      Port := 21;
      Username := ´nomeusuario´;
      Password := ´senhausuario´;
      Passive  := False;
      if not Connected then
       Connect;
      if Connected then
       begin
//         desabilito os eventos OnWork
         OnWork      := nil;
         OnWorkBegin := nil;
         ChangeDir(APastaRemota);
//        Retorno o tamanho do arquivo
         kTamanho := Size(AArqDown) div 1024;
         (* Tamanho_Arquivo, usado para barra de progresso *)
         Tamanho_Arquivo := Size(AArqDown);
         lblTamanho.Caption := ´Tamanho da Aproximado: ´ + FormatFloat(´0.00 Kb´,kTamanho);
         lblTamanho.Font.Color := clBlue;
         lblTamanho.Font.Style := [fsBold];
         lblTamanho.Refresh;
         lblTamanho.Update;
         ANewVersao.Position := 0;
         Get(AVersaoRemota, ANewVersao, True);
espero ter ajudado :wink:


Responder

Gostei + 0

06/03/2008

Luiz_aquino

Eu apenas copiei uma parte do meu atualizador, mais para retornar o tamanho de um arquivo antes de efetuar o download do mesmo, basta usar uma Variavel tipo LongWord por exemplo e usar o comando Size(ArquivoRemoto)...
    with IdFTPAtualiza do
    begin
      Host := ´ftp.sitedaempresa.com.br´;
//      Port := 21;
      Username := ´nomeusuario´;
      Password := ´senhausuario´;
      Passive  := False;
      if not Connected then
       Connect;
      if Connected then
       begin
//         desabilito os eventos OnWork
         OnWork      := nil;
         OnWorkBegin := nil;
         ChangeDir(APastaRemota);
//        Retorno o tamanho do arquivo
         kTamanho := Size(AArqDown) div 1024;
         (* Tamanho_Arquivo, usado para barra de progresso *)
         Tamanho_Arquivo := Size(AArqDown);
         lblTamanho.Caption := ´Tamanho da Aproximado: ´ + FormatFloat(´0.00 Kb´,kTamanho);
         lblTamanho.Font.Color := clBlue;
         lblTamanho.Font.Style := [fsBold];
         lblTamanho.Refresh;
         lblTamanho.Update;
         ANewVersao.Position := 0;
         Get(AVersaoRemota, ANewVersao, True);
espero ter ajudado :wink:


Ajudou sim, fiz dessa forma, q no meu caso está bom
 procedure TDownloadFTP.OnFTPWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  frmProgresso.PosicaoAtual := frmProgresso.PosicaoAtual + AWorkCount;
end;


Tenho mais uma dúvida, não sei se vc sabe como fazer, em minha ferramenta o usuário pode parar o download e reiniciar, para parar eu fiz Ftp.Abort e para reiniciar eu não sei oq fazer, tem ideia?


Responder

Gostei + 0

06/03/2008

Paullsoftware

quanto a retornar de onde parou isso depende do servidor de onde está sendo baixado o arquivo, da uma olhada nesse tópico que tem as informações que você pocura blz!
http://forum.devmedia.com.br/viewtopic.php?t=93169

:wink:


Responder

Gostei + 0

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

Aceitar