2012-04-19 21 views
0

我有一個用Delphi 6編寫的項目,它使用了Indy 8互聯網VCL組件。我需要將這個項目升級到Delphi 2005,並改用Indy 10組件。當我在Delphi 2005中打開包含舊的indy組件的表單時,會發生以下兩個錯誤:'Property OnLogItem does not exist',後面跟'Property Target does not exist'。這兩個錯誤都與TIdLogDebug Indy組件有關。我聽說,不要使用TIdLogDebug組件,而必須使用TIdLogEvent組件。但是,此組件沒有OnLogItem和Target屬性。Indy 10的IIndy 8 - 替換TIdLogDebug組件的代碼

我應該使用Indy 10的TIdLogEvent組件中的什麼事件處理程序來替代Indy 8中的TIdLogDebug組件的OnLogItem事件?

謝謝

+0

謝謝肯,我改變了我的問題,希望現在更清楚。 – user1202134 2012-04-20 04:28:40

回答

3

TIdLogDebug自己在印第安納波利斯10依然存在,但它比印8的TIdLogDebug有很大不同。 Indy 9中的TIdLogDebug和更高版本不再有Target屬性或OnLogItem事件。

Indy 8的TIdLogDebug是Indy的唯一日誌記錄組件,它支持多種類型的輸出 - 文件,調試器和事件。在Indy 9中,該功能被拆分爲單獨的TIdLogFile,TIdLogDebugTIdLogEvent組件(以及添加了新的TIdLogStream組件)。

在Indy 9和更高版本中,TIdLogEvent組件將是使用的正確替代品。 TIdLogEventOnReceivedOnSentOnStatus事件。 Indy 8沒有區分TIdLogDebug中不同的數據流方向,所有的事情都是通過單一的OnLogItem事件進行的。每個數據流方向的日誌消息都有不同的前綴。在Indy 9和更高版本中,單獨的事件現在用於每個方向,因此不會直接替換舊的OnLogItem事件。您需要更新代碼以適應新的事件模型。

+0

謝謝雷米,這完美地回答了我的問題。 – user1202134 2012-04-20 04:22:38