0

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

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

属性 OnLogItem 不存在

属性目标不存在

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

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

我应该在 Indy 10 的组件中使用什么事件处理程序TIdLogEvent来替代 Indy 8 组件的OnLogItem事件TIdLogDebug

4

1 回答 1

3

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

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

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

于 2012-04-19T22:16:02.537 回答