title: Simple Delphi Firemonkey TidFTP test download hangs at 'Starting FTP transfer'
body: <p>I'm making a simple FTP download test with TidFTP using a Multi-device application in Delphi XE7. My objective is later to see this working in Android before using this functionality in my App but for now, I'm running this test in Windows 32-bit. The problem is that my FTP status text (as shown by a memo) 'resolves host', 'connects', 'establishes connection', and then 'Starts FTP transfer' but hangs there never returning from Get until a 'read timeout'. The first time this pops up a firewall warning which I accept but retries do the same thing. I've downloaded and built the <a href="http://www.indyproject.org/Sockets/Demos/index.EN.aspx" rel="nofollow noreferrer">Indy FTP client demo</a> which runs but does exactly the same thing.</p>
  
  <p>I'm running in a virtual machine so I've tried running my EXE's (demo and my simple project) on the host machine and I get the same problem, however 'WinSCP' the FTP tool works fine with the same logon and port 21 allowing me to see my source file. </p>
  
  <p>Here's my code cribbed largely from <a href="https://stackoverflow.com/questions/18745994/how-to-download-file-using-tidftp-in-delphixe2">this SO question</a> to fetch a small text file in the root of my website:</p>
  
  <pre><code>procedure TForm4.Button1Click(Sender: TObject);
  begin
    IdFTP1.Host := 'www.mysite.co.uk';
    IdFTP1.Username := 'username';
    IdFTP1.Password := 'password';
    IdFtp1.Passive := false;
    IdFtp1.ConnectTimeout := 1000;
    IdFtp1.Connect();
    IdFtp1.BeginWork(wmRead);
    IdFTP1.ChangeDir( '/' );
    IdFTP1.Get( 'hope.txt', 'c:\scratch\wow.txt', True );
    IdFtp1.Disconnect();
  end;
  
  procedure TForm4.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
    const AStatusText: string);
  begin
    Memo1.Lines.Add( AStatusText );
    Application.ProcessMessages;
  end;
  </code></pre>
  
  <p>I'm not proud of Application.ProcessMessages but I will replace it later with a thread and in any case there seems to be no 'TidAntiFreeze' in the Android framework (although the same code placed into a VCL application form with a TidAntiFreeze behaved the same too).</p>
  
  <p>Any comments gratefully received.</p>