我在程序中用到TidFTP从服务器上下载文件, 但当文件很大时(18.2M), 却有点问题,不知怎么解决,请高人指点.语句如下: 
procedure TfmMain.BtnDownloadFileClick(Sender: TObject);
......
  try
    ClientFtp.ChangeDir(strSrcDir);
    nSize := ClientFtp.Size(strFileName);    if nSize >= 0 then begin
      DeleteFile(m_strLocalName);      ProgBarDown.Min := 0;
      ProgBarDown.Max := nSize;
      ProgBarDown.Position:=0;
      ClientFtp.Get(strFileName, m_strLocalName, true);
      ShowMessage('Download ok!');
    end;
  except
    on E: Exception do begin
      ClientFtp.Abort();    // 放弃下载
      ShowInfo(E.Message);
    end;
  end;
......
end;procedure TfmMain.ClientFtpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  ShowInfo('Ftp work end');
  ProgBarDown.Position := 0;
end;运行结果是: 能够显示'Ftp work end', 但不能显示'Download ok!', 请问怎么解决?

解决方案 »

  1.   

    只看代码来分析,你的 nSize>=0 这句话不成立的时候就会出现你上述的现象。
    TIdFTP 没有玩的太多,不敢多言。
    不过我下载大文件的时候都是过百兆的,也没有你这样的问题啊。
      

  2.   

    nSize=19174710, 我这里已经执行了ClientFtp.Get(strFileName, m_strLocalName, true),但就一直停在这儿,尽管已经显示了'Ftp work end'.所以我不得不在ClientFtpWorkEnd()中加一句ClientFtp.Quit(); 但这不是解决办法啊,谁能告诉我到底是办什么啊?