2010-07-06 65 views
1

我遇到了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的不同版本」消息。 固定。

+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

回答

2

您應該首先使用Delphi安裝到卸載與Delphi一起安裝的Indy版本 - 然後您可以清除任何剩餘的文件。您不應該從手動清理文件夾和註冊表開始。 然後你可以安裝另一個版本。請注意有些版本「破」

+1

這就是爲什麼我不喜歡像Jedi和Indy這樣的大型第三方庫。謝謝你的回答。+1 – Ampere 2010-07-10 04:24:35

相關問題