Por que os arquivos às vezes têm tamanho diferente ou são corrompidos após a transferência pelo FTP?

Estou tendo problemas para baixar um arquivo usando o componente TidFTP no Delphi XE2. Eu sou capaz de obter uma conexão com o site FTP, obter uma lista de arquivos e executar o comando get. No entanto, quando tento fazer o download de um arquivo usando o comando get, o arquivo sempre faz o download maior que o arquivo de origem. Então o arquivo subseqüente está corrompido.

Além disso, se eu tentar baixar vários arquivos, os primeiros downloads de arquivos (maiores que a fonte) e os arquivos restantes serão ignorados. Nenhum erro é lançado a partir do comando get, apenas sai. Eu tentei ligar em alguns dos eventos no controle TidFTP como AfterGet e OnStatus, mas tudo parece normal.

Eu tentei usar um cliente FTP de terceiros para acessar o arquivo e baixá-lo apenas para se certificar de que não foi um problema com o nosso servidor FTP e que o download funcionou como esperado. Então, eu estou pensando que isso pode estar relacionado ao controle do TidFTP ou talvez eu esteja fazendo algo incorretamente.

Aqui está a rotina que estou usando para baixar o arquivo:

var
  ftp: TIdFTP;
  strDirectory: string;
begin
  ftp := TIdFTP.Create(nil);
  try
    ftp.Host := 'ftp.myftpserver.com'
    ftp.Passive := false;
    ftp.Username := 'TestUser';
    ftp.Password := 'TestPassword';
    ftp.ConnectTimeout := 1000;
    ftp.Connect();
    ftp.BeginWork(wmRead);
    ftp.ChangeDir('/TestArea/');
    strDirectory := 'c:\test\';
    if not DirectoryExists(strDirectory) then
      CreateDir(strDirectory);
    ftp.Get('Test.zip', strDirectory + '\' + 'Test.zip', true, false);
   ftp.Disconnect();
  except
    on e: exception do
      showMessage(e.message);
  end;
end;

questionAnswers(1)

yourAnswerToTheQuestion