Décio,
Na minha opinião, existem formas mais fáceis de se fazer isto, como por exemplo utilizar as classes .NET, e não as DLLs diretamente.
Tente o seguinte código (Faça o teste em um Job mesmo):
object ftpo;
object ftpResponse;
System.Net.FtpWebResponse response;
System.Net.FtpWebRequest request;
System.IO.StreamReader reader;
System.IO.StreamWriter writer;
System.IO.Stream requestStream;
System.Net.NetworkCredential credential;
System.String line;
;
new InteropPermission(InteropKind::ClrInterop).assert();
request = ftpo;
request.set_KeepAlive(false);
credential = new System.Net.NetworkCredential('usuario', 'senha');
request.set_Credentials(credential);
request.set_Timeout(10000);
request.set_Method("NLST");
response = request.GetResponse(); //Aqui o Ax irá obter a lista de arquivos
reader = new System.IO.StreamReader(response.GetResponseStream());
line = reader.ReadLine();
while (!System.String::IsNullOrEmpty(line))
{
info(line.toString());
line = reader.ReadLine();
}
reader.close();
ftpo = null;
request = null;
if(response)
response.close();
CodeAccessPermission::revertAssert();
Como pode perceber, neste trecho não estou tratando exceções, mas acredito que se não esqueci de alguma referência, o código irá funcionar, e irá te retornar a listagem de arquivos do diretório FTP indicado no começo do código.
Para fazer o download dos arquivos, você precisa fazer algo similar, mas com o comando de DOWNLOAD (RETR no lugar de NLST), e indicar o nome completo do arquivo no caminho do FTP.
Qualquer dúvidas, nos comunique.
Abraço!