Pegar tamanho do arquivo
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:
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!!!
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
Curtidas 0
Respostas
Paullsoftware
05/03/2008
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)...espero ter ajudado :wink:
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);
GOSTEI 0
Luiz_aquino
05/03/2008
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)...espero ter ajudado :wink:
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);
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?
GOSTEI 0
Paullsoftware
05/03/2008
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:
http://forum.devmedia.com.br/viewtopic.php?t=93169
:wink:
GOSTEI 0