更新后Indy不再工作

Posted

技术标签:

【中文标题】更新后Indy不再工作【英文标题】:Indy is not working anymore after update 【发布时间】:2010-07-06 18:24:13 【问题描述】:

我在使用 Indy 时遇到了各种各样的问题,并且按照某人的建议(在 *** 上)我已经更新到最新版本的 Indy - 至少这是我打算做的。

在开始安装之前,我已经从我的 Delphi 和注册表中手动删除了所有包含“indy”字样的文件。然后我按照标准安装程序:http://www.indyproject.org/sockets/Docs/Indy10Installation.en.aspx

现在下面的代码不再工作了。代码只返回 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; 

有什么方法可以查看我安装了哪个版本的 Indy?

编辑: 我还收到“Unit idHTTP was compiled with a different version of IdException.IdException”消息。已修复。

【问题讨论】:

听起来您的安装很糟糕,例如您在安装新版本之前没有完全删除旧版本(仅查找名称中带有“indy”的文件是不够的)。 安装现在可以工作了(确实我必须很好地清理Delphi文件夹和注册表。但是,代码仍然没有下载文件。 究竟是什么不工作?你有错误吗?文件数据错误?你需要更具体。无论如何,我建议您摆脱 TIdAntiFreeze 并将下载移动到单独的工作线程中。如果你需要 Download() 是一个阻塞函数,它可以等待线程完成它的工作。 【参考方案1】:

您应该首先使用 Delphi 安装程序来卸载随 Delphi 安装的 Indy 版本 - 然后您可以清理任何剩余的文件。您不应该从手动清理文件夹和注册表开始。 然后你可以安装另一个版本。请注意,有些版本是“破坏性的”

【讨论】:

这就是我不喜欢 Jedi 和 Indy 等大型 3rd 方库的原因。感谢您的回答。 +1

以上是关于更新后Indy不再工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Xcode 插件(如 clang 格式)在更新到新版本的 Xcode 后不再工作了?

Laravel 4.2 artisan CLI 在作曲家更新后不再工作

Discord webhook embed php curl 在最近的 Discord 更新后不再工作

为啥我的 Xcode 插件(例如 clang 格式)在更新到新版本的 Xcode 后,与 Alcatraz 一起安装不再工作?

更新了 Visual Studio,OpenCV 项目不再工作

迁移 Swift 和更新 Alamofire 后,我的路由器无法工作