我遇到了Indy的所有問題,並按照某人的建議(在stackoverflow)我已經更新到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的不同版本」消息。
固定。
聽起來像你有一個不好的安裝,例如,如果你沒有完全刪除舊版本,然後再安裝一個新的版本(只需尋找名稱中的「indy」文件是不夠的)。 – 2010-07-06 22:21:56
安裝現在可以運行(事實上,我必須清理Delphi文件夾,並且註冊表也是如此) 但是,代碼仍然沒有下載該文件。 – Ampere 2010-07-07 01:23:40
什麼現在不工作?您是否收到錯誤?文件數據不正確?在任何情況下,我都會建議你除掉TIdAntiFreeze,並將下載文件移動到一個單獨的工作線程中,如果你需要Download()作爲阻塞函數,它可以等待線程完成它的工作 – 2010-07-08 05:13:58