No sé si no he comprendido algo, pero me parece muy complicado.
Un copia-pega de ejemplo:
Código Delphi
[-]uses
Windows, Messages, ......, IdFTP, IdComponent;
procedure DescargarArchivo( sArchivo: String );
var
FTP: TIdFTP;
begin
FTP := TIdFTP.Create( nil );
FTP.OnWork := FTPWork;
FTP.Username := 'usuario';
FTP.Password := 'miclave';
FTP.Host := 'miftp.midominio.com';
try
FTP.Connect;
except
raise Exception.Create( 'No se ha podido conectar con el servidor ' + FTP.Host );
end;
FTP.ChangeDir( '/misarchivos/copiaseguridad/' );
if FileExists( sArchivo ) then
DeleteFile( sArchivo );
FTP.Get( ExtractFileName( sArchivo ), sArchivo, False, False );
FTP.Disconnect;
FTP.Free;
end;