Indy 10的IIndy 8 - 替换TIdLogDebug组件的代码

问题描述:

我有一个用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

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