Indy -gt; FTP.OnWork não funciona (solução aqui!)
Dae galera,
Tive problemas para fazer funcionar o evento OnWork do componente idFTP da Indy. Estou utilizando a Indy versão 9, pq odiei a versão 10. (Mesmo assim, este problema acontece nas duas versões.)
O que acontece é que ao fazer o upload de um arquivo o evento OnWork simplesmente não funciona, e desse jeito fica impossível mostrar o progresso
da transação.
Bem, a solução que encontrei foi esta atualização para a biblioteca Indy, disponivel neste obscuro endereço que encontrei após muita procura e tempo perdido. :shock:
[url]http://indy.fulgan.com/ZIP/indy9.zip[/url]
Está é uma versão Developer Snapshot da biblioteca, portanto, use por conta e risco, para mim funcionou muito bem.
Abaixo, segue uma sugestão para implementação do progresso dos
downloads/uploads.
Tive problemas para fazer funcionar o evento OnWork do componente idFTP da Indy. Estou utilizando a Indy versão 9, pq odiei a versão 10. (Mesmo assim, este problema acontece nas duas versões.)
O que acontece é que ao fazer o upload de um arquivo o evento OnWork simplesmente não funciona, e desse jeito fica impossível mostrar o progresso
da transação.
Bem, a solução que encontrei foi esta atualização para a biblioteca Indy, disponivel neste obscuro endereço que encontrei após muita procura e tempo perdido. :shock:
[url]http://indy.fulgan.com/ZIP/indy9.zip[/url]
Está é uma versão Developer Snapshot da biblioteca, portanto, use por conta e risco, para mim funcionou muito bem.
Abaixo, segue uma sugestão para implementação do progresso dos
downloads/uploads.
unit blablabla; ... var LastTime: Cardinal; BytesToTransfer: Integer; AverageSpeed: Double; implementation ... procedure TfrmPrincipal.FTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer); begin LastTime := GetTickCount; BytesToTransfer := AWorkCountMax; AverageSpeed := 0; end; procedure TfrmPrincipal.FTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer); var Sec: Word; DelayTime: Double; begin DelayTime := (GetTickCount - LastTime) / 1000; if DelayTime > 0 then begin AverageSpeed := (AWorkCount / 1024) / DelayTime; lbSpeed.Caption := FormatFloat(´0.00 KB/s´, AverageSpeed); end; if AverageSpeed > 0 then begin Sec := Trunc(((BytesToTransfer - AWorkCount) / 1024) / AverageSpeed); lbTime.Caption := StringReplace(Format(´¬2d:¬2d:¬2d´, [Sec div 3600, (Sec div 60) mod 60, Sec mod 60]),´ ´,´0´,[rfReplaceAll]); end; Progresso.Position := (AWorkCount * 100) div BytesToTransfer; end; end.
Aureliovs
Curtidas 0
Respostas
Clovis Perazza
15/03/2007
BytesToTransfer não consegue carregar.
Comigo não funcionou.
Comigo não funcionou.
GOSTEI 0