Delphi 更新后Indy不再工作

Delphi 更新后Indy不再工作,delphi,delphi-7,indy,Delphi,Delphi 7,Indy,我对Indy有各种各样的问题,根据某人的建议(在stackoverflow),我已经更新到Indy的最新版本-至少这是我打算做的 在开始安装之前,我已经从我的Delphi和注册表中手动删除了所有包含“indy”单词的文件。然后,我遵循了标准安装过程: 现在下面的代码不再工作了。代码只返回FALSE function Download(CONST aSourceURL: string; CONST aDestFileName: string; OUT aErrm: String): Boolean

我对Indy有各种各样的问题,根据某人的建议(在stackoverflow),我已经更新到Indy的最新版本-至少这是我打算做的

在开始安装之前,我已经从我的Delphi和注册表中手动删除了所有包含“indy”单词的文件。然后,我遵循了标准安装过程:

现在下面的代码不再工作了。代码只返回FALSE

function Download(CONST aSourceURL: string; CONST aDestFileName: string; OUT aErrm: String): Boolean;
VAR
  Stream: TMemoryStream;
  IDAntiFreeze: TIDAntiFreeze;
  fIDHTTP : TIDHTTP;
begin
  fIDHTTP := TIDHTTP.Create(NIL);
//  fIDHTTP.ConnectTimeout:=5000;     <- not recognized
  fIDHTTP.ReadTimeout:= 1000;
  fIDHTTP.HandleRedirects := TRUE;
  fIDHTTP.AllowCookies := FALSE;
  fIDHTTP.Request.UserAgent := 'Mozilla/4.0';
  fIDHTTP.Request.Connection := 'Keep-Alive';
  fIDHTTP.Request.ProxyConnection := 'Keep-Alive';
  fIDHTTP.Request.CacheControl := 'no-cache';
  IDAntiFreeze := TIDAntiFreeze.Create(NIL);

  Stream := TMemoryStream.Create;
  TRY
    TRY
      fIDHTTP.Get(aSourceURL, Stream);
      {
      if FileExists(aDestFileName)
      then DeleteFile(PWideChar(aDestFileName)); }

      Stream.SaveToFile(aDestFileName);
      Result:= TRUE;
    EXCEPT
      On E: Exception do
        begin
          Result:= FALSE;
          aErrm := E.Message + ' (' + IntToStr(fIDHTTP.ResponseCode) + ')';
        end;
    END;
  FINALLY
    Stream.Free;
    IDAntiFreeze.Free;
    fIDHTTP.Free;
  END;
end; 
函数下载(CONST asourcurl:string;CONST aDestFileName:string;OUT aErrm:string):布尔值;
变量
流:TMemoryStream;
IDAntiFreeze:TID防冻剂;
fIDHTTP:TIDHTTP;
开始
fIDHTTP:=TIDHTTP.Create(NIL);

//fIDHTTP.ConnectTimeout:=5000 您应该首先使用Delphi安装程序卸载与Delphi一起安装的Indy版本,然后可以清理任何剩余文件。您不应该从手动清理文件夹和注册表开始。
然后您可以安装另一个版本。请注意,某些版本正在“中断”

听起来您的安装不好,例如在安装新版本之前没有完全删除旧版本(仅查找名称中带有“indy”的文件是不够的)。安装现在就可以工作了(事实上,我必须很好地清理Delphi文件夹和注册表。但是,代码仍然无法下载文件。现在到底是什么不起作用?是否有错误?错误的文件数据?您需要更具体一些。在任何情况下,我建议您去掉TID防冻剂,并将下载转移到单独的工作线程中。如果你需要Download()作为一个阻塞函数,它可以等待线程完成它的工作。这就是为什么我不喜欢大型第三方库,如Jedi和Indy。谢谢你的回答。+1