Indy 8到Indy 10 - 什么取代了TIdLogDebug组件?

时间:2012-04-19 11:44:12

标签: delphi indy indy10 indy-8

我有一个用Delphi 6编写并使用Indy 8的项目。我需要将这个项目升级到Delphi 2005并使用Indy 10.

在Delphi 2005中,当我打开包含旧Indy组件的Form时,会出现以下两个错误:

  

属性OnLogItem不存在

     

属性目标不存在

这两个错误都与Indy的TIdLogDebug组件有关。

我听说不是使用TIdLogDebug,而是使用TIdLogEvent。但是,此组件没有OnLogItemTarget属性。

我应该使用什么事件处理程序与Indy 10的TIdLogEvent组件一起使用,替换Indy 8的OnLogItem组件的TIdLogDebug事件?

1 个答案:

答案 0 :(得分:3)

TIdLogDebug本身仍然存在于Indy 10中,但它与Indy 8的TIdLogDebug非常不同。 Indy 9及更高版本中的TIdLogDebug不再有Target属性或OnLogItem事件。

Indy 8的TIdLogDebug是Indy唯一的日志记录组件,它支持多种类型的输出 - 文件,调试器和事件。在Indy 9中,该功能被拆分为单独的TIdLogFileTIdLogDebugTIdLogEvent组件(并添加了新的TIdLogStream组件)。

在Indy 9及更高版本中,TIdLogEvent组件将是正确的替代品。 TIdLogEventOnReceivedOnSentOnStatus个事件。 Indy 8没有区分TIdLogDebug中不同的数据流方向,所有内容都通过单个OnLogItem事件汇集。每个数据流方向的日志消息具有不同的前缀。在Indy 9及更高版本中,现在每个方向都使用单独的事件,因此没有直接替换旧的OnLogItem事件。您需要更新代码以适应更新的事件模型。