我有一个用Delphi 6编写并使用Indy 8的项目。我需要将这个项目升级到Delphi 2005并使用Indy 10.
在Delphi 2005中,当我打开包含旧Indy组件的Form时,会出现以下两个错误:
属性OnLogItem不存在
属性目标不存在
这两个错误都与Indy的TIdLogDebug
组件有关。
我听说不是使用TIdLogDebug
,而是使用TIdLogEvent
。但是,此组件没有OnLogItem
和Target
属性。
我应该使用什么事件处理程序与Indy 10的TIdLogEvent
组件一起使用,替换Indy 8的OnLogItem
组件的TIdLogDebug
事件?
答案 0 :(得分:3)
TIdLogDebug
本身仍然存在于Indy 10中,但它与Indy 8的TIdLogDebug
非常不同。 Indy 9及更高版本中的TIdLogDebug
不再有Target
属性或OnLogItem
事件。
Indy 8的TIdLogDebug
是Indy唯一的日志记录组件,它支持多种类型的输出 - 文件,调试器和事件。在Indy 9中,该功能被拆分为单独的TIdLogFile
,TIdLogDebug
和TIdLogEvent
组件(并添加了新的TIdLogStream
组件)。
在Indy 9及更高版本中,TIdLogEvent
组件将是正确的替代品。 TIdLogEvent
有OnReceived
,OnSent
和OnStatus
个事件。 Indy 8没有区分TIdLogDebug
中不同的数据流方向,所有内容都通过单个OnLogItem
事件汇集。每个数据流方向的日志消息具有不同的前缀。在Indy 9及更高版本中,现在每个方向都使用单独的事件,因此没有直接替换旧的OnLogItem
事件。您需要更新代码以适应更新的事件模型。