Transferindo arquivos via ftp pelo delphi

01/02/2013

13

Ola, estou com o seguinte problema.
Estou precisando baixar arquivos via ftp da maquina do usuario, porem se eu faço arquivo por arquivo o arquivo vem sem problemas, mais, se fizer uma rotina para ler todos os arquivos da pasta do ftp o arquivo vem corrompido.
Alguem tem alguma ideia. Segue codigo.

{Procedimento com arquivo perfeito}
Arquivos('Atualizar.exe');//(IdFTP.DirectoryListing[I].FileName);
IdFTP.Get('Atualizar.exe',UVarSys.Config.Ferramentas+'\Atualizar.exe', true);

{Procedimento com arquivo corrompido}
IdFTP.List(ListBox1.Items,'*.exe',False);
i:=0;
if ListBox1.Items.Count > 0 then
Begin
repeat
Arquivos(ListBox1.Items[i]);
Try
IdFTP.Get(ListBox1.Items[i],UVarSys.Config.Ferramentas+'\'+ListBox1.Items[i], true);
Except
Memo.Lines.Add(' Erro ao Baixar Arquivo');
End;
inc(i);
until I = (IdFTP.DirectoryListing.Count);
end;


Obrigado
Responder

Posts

01/02/2013

Bruno Leandro

Ola faz um teste com essas alterações

IdFTP.List(ListBox1.Items,'*.exe',False);
i:=0;
if ListBox1.Items.Count > 0 then
Begin
repeat
Arquivos(ListBox1.Items[i]);
Try
IdFTP.Get(ListBox1.Items[i],UVarSys.Config.Ferramentas+'\'+ListBox1.Items[i], true);
Except
Memo.Lines.Add(' Erro ao Baixar Arquivo');
End;
inc(i);
until I = (ListBox1.Items.Count -1);
end;
Responder
Ola Bruno.
Obrigado pela atenção mais nao deu certo mesmo com aquela linha.

o problema e que os arquivos ficam no formato errado ex:, se for executar o arquivo que foi baixado da a mensagem que nao eh um arquivo win32 valido.

o que mais me deixa louco eh que se eu mando com as duas linhas acima ou senha informando o nome do programa no fonte da certo.

:/

Responder
Para vc me entender, o que eu quero, e colocar varios arquivos em um ftp e o usuario baixar, nao quero amarrar o programa no fonte pq assim faltando algum arquivo "dll ou exe, etc" tenho que compilar o programa de novo.

Responder

04/02/2013

Daniel Santos

Repeat? fazia tempo que nçao via! use o For

Ja tentou trocar o tipo TransferType para Binary?
Responder

05/02/2013

Bruno Leandro

Veja se assim é o que voce precisa

IdFTP.List(ListBox1.Items,'*.*',False);

for i := 0 to ListBox1.Items.Count -1 do
begin
if ListBox1.Selected[I] then
begin
Arquivos(ListBox1.Items[i]);
Try
IdFTP.Get(ListBox1.Items[i],UVarSys.Config.Ferramentas+'\'+ListBox1.Items[i], true);
Except
Memo.Lines.Add(' Erro ao Baixar Arquivo');
End;
end;
end;
Responder
isso aqui resolve seu problema
Ftp.TransferType := ftBinary;
Responder