Por consincidência estou usando o FTP dos componentes Indy e está uma 
maravilha. vai o exemplo que peguei na NET.

// IdFTP1 é um TIdFTP



// conecta no servidor FTP

IdFTP1.Username := '...seu nome de usuário...';

IdFTP1.Password := '...sua senha secreta...';

IdFTP1.Host := '...nome do seu servidor...'; // exemplo: ftp.example.com

IdFTP1.Connect;



if IdFTP1.Connected then begin



  // transfere um arquivo texto

  IdFTP1.TransferType := ftASCII;

  IdFTP1.Put('c:\autoexec.bat', 'autoexec.bat');



  // transfere um arquivo binário

  IdFTP1.TransferType := ftBinary;

  IdFTP1.Put('c:\command.com', 'meucommand.com');



  // desconecta

  IdFTP1.Quit;

end;

.



Olá a todos!
Andei procurando muito pela web algum exemplo de como medir o progresso da 
transferência de um arquivo através do componente idFtp, no Delphi 6. Depois 
de muito procurar e nada encontrar, um pequeno exemplo que não funcionava 
muito bem me fez pensar um pouco e me levou, após alguns testes, a um 
medidor de progresso funcional, feito com um gauge.

Para fazer um exemplo, coloque um componente idFTP, um ListBox e um Button 
no seu formulário. Configure o seu componente de conexão de acordo com os 
dados do ftp que irá se conectar e declare uma variável global chamada 
bytesToTransfer

var

  Form1: TForm1;

  bytesToTransfer: integer;

em seguida, faremos a conexão e o download de todos os arquivos .exe que 
estiverem no ftp. No exemplo, o código foi implementado no evento onClick do 
botão:

procedure TForm1.Button1Click(Sender: TObject);

var

  indice: integer;

begin

  try

    //efetua a conexão ao FTP

    if IdFTP1.Connected then

      IdFTP1.Disconnect;

    IdFTP1.Connect();



    //lista todos os arquivos do tipo .exe do ftp no ListBox1

    IdFTP1.List(ListBox1.Items,'*.exe',false);



    //se não houverem arquivos, aborta

    if ListBox1.Items.Count = 0 then

      Abort;



    //para cada ítem do ListBox1

    for indice:=0 to ListBox1.Items.Count -1 do

    begin

      try

        //marca o ítem selecionado

        ListBox1.Selected[indice] := true;

        //captura o tamanho do arquivo para a varíavel global

        bytesToTransfer := IdFTP1.Size(ListBox1.Items.Strings[indice]);

        //inicia a transferência do arquivo

        IdFTP1.Get(ListBox1.Items.Strings[indice],

          '<pasta local>' + ListBox1.Items.Strings[indice],true);

      except

        on e:exception do

          showmessage(e.Message);

      end;

    end;



  finally

    //desconecta

    IdFTP1.Disconnect;

  end;

end;

No eventoWorkBegin do idFTP, que é disparado no momento em que o Download do 
arquivo é iniciado, faça:

procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;

   const AWorkCountMax: Integer);

begin

  //limpa a barra de progresso

  Gauge1.Progress := 0;

  //define o tamanho máximo para o Gauge

  if AWorkCountMax > 0 then

    Gauge1.MaxValue := AWorkCountMax

  else

    Gauge1.MaxValue := bytesToTransfer;

end;

E finalmente, a cada conjunto de bytes trazidos pelo componente, 
incrementamos o Gauge. Isso é feito no evento Work do idFTP:





procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;

   const AWorkCount: Integer);

begin

  //incrementa o Gauge

  Gauge1.Progress := AWorkCount;

end;

É isso. Ficou bastante elegante mostrar o progresso do arquivo e o progresso 
total, este sendo medido atraves do número de itens da lista e o item atual 
sendo transferido. Espero que seja útil!

Abraços a todos!

---------------------------------------------------------


Eu esqueci o nome do autor, que o mesmo mim perdoe.

Alexandre C Souza.




----- Original Message ----- 
From: "Vagner Gois" <vjbgg...@yahoo.com.br>
To: <delphi-br@yahoogrupos.com.br>
Sent: Monday, February 01, 2010 1:07 PM
Subject: Res: [delphi-br] [MAF] FTP no Delphi 7


Boa tarde, Marcos

Eu fiz um projeto aqui pra replicar dados entre servidores diferentes 
utilizando FTP com Delphi7 + Indy... O programa gera as triggers... E tem 
uma tabela que armazena os dados que vão sendo alterados... Parece loucura 
mas tinha um cliente que precisa disso... No final das contas o cara não vai 
mais usar.... :-(

To mandando o projeto ai... Ve se te ajuda.

sds
Vagner

 SNT | IFX [DB, MK, DBS, PLAYER] :: SRB :: SCR :: SBI
web :: http://snt.50webs.org
msn :: vagner.g...@hotmail.com
skype :: vagner.gois




________________________________
De: Marcos Abreu Ferreira <m.abreuferre...@hotmail.com>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Segunda-feira, 1 de Fevereiro de 2010 12:19:36
Assunto: [delphi-br] [MAF] FTP no Delphi 7


Pessoal,

estou desenvolvendo uma aplicação que irá fazer upload de arquivo texto. 
Tentei usar o componente do Indy Projects, mas não obtive o resultado 
esperado. Andei procurando na net e achei alguns exemplos usando DLL, mais 
precisamente a Wininet.dll da Microsoft.

Vi que na minha máquina já tem, mas não consegui obter mais informações 
sobre ela, se já vem instalada no Windows, se tem algum problema de eu 
enviar uma versão e substituir a que já existe, etc...

Alguém já usou essa DLL? Alguém conhece algum outro componente ou DLL 
gratuito e obteve um resultado bom? Minha aplicação envia arquivos txt de 20 
em 20 segundos para o provedor, precisava de algo que verificasse se existe 
conexão com a internet, se a conexão ao servidor foi feita com sucesso, 
etc...

Att,

Marcos Ferreira





      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>




Responder a