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的不同版本”消息。
固定。
答
您应该首先使用Delphi安装到卸载与Delphi一起安装的Indy版本 - 然后您可以清除任何剩余的文件。您不应该从手动清理文件夹和注册表开始。 然后你可以安装另一个版本。请注意有些版本“破”
+1
这就是为什么我不喜欢像Jedi和Indy这样的大型第三方库。谢谢你的回答。+1 – Ampere 2010-07-10 04:24:35
听起来像你有一个不好的安装,例如,如果你没有完全删除旧版本,然后再安装一个新的版本(只需寻找名称中的“indy”文件是不够的)。 – 2010-07-06 22:21:56
安装现在可以运行(事实上,我必须清理Delphi文件夹,并且注册表也是如此) 但是,代码仍然没有下载该文件。 – Ampere 2010-07-07 01:23:40
什么现在不工作?您是否收到错误?文件数据不正确?在任何情况下,我都会建议你除掉TIdAntiFreeze,并将下载文件移动到一个单独的工作线程中,如果你需要Download()作为阻塞函数,它可以等待线程完成它的工作 – 2010-07-08 05:13:58