Indy在更新后无法工作

问题描述:

我遇到了Indy的所有问题,并按照某人的建议(在*)我已经更新到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?

编辑: 另外我得到一个“单元idHTTP编译与IdException.IdException的不同版本”消息。 固定。

+0

听起来像你有一个不好的安装,例如,如果你没有完全删除旧版本,然后再安装一个新的版本(只需寻找名称中的“indy”文件是不够的)。 – 2010-07-06 22:21:56

+0

安装现在可以运行(事实上,我必须清理Delphi文件夹,并且注册表也是如此) 但是,代码仍然没有下载该文件。 – Ampere 2010-07-07 01:23:40

+0

什么现在不工作?您是否收到错误?文件数据不正确?在任何情况下,我都会建议你除掉TIdAntiFreeze,并将下载文件移动到一个单独的工作线程中,如果你需要Download()作为阻塞函数,它可以等待线程完成它的工作 – 2010-07-08 05:13:58

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

+1

这就是为什么我不喜欢像Jedi和Indy这样的大型第三方库。谢谢你的回答。+1 – Ampere 2010-07-10 04:24:35