我在我的 Delphi 应用程序中使用 EurekaLog 7 Professional。从 Delphi 7 迁移到 Delphi XE4 时,我收到以下编译器警告。
[dcc32 Warning] myproject.dpr(4): W1006 Unit 'ExceptionLog' is deprecated
我应该如何摆脱这个警告?
我在我的 Delphi 应用程序中使用 EurekaLog 7 Professional。从 Delphi 7 迁移到 Delphi XE4 时,我收到以下编译器警告。
[dcc32 Warning] myproject.dpr(4): W1006 Unit 'ExceptionLog' is deprecated
我应该如何摆脱这个警告?
此类问题的答案始终是您需要删除对命名单元的引用并将其替换为对其替换的引用。
在这种情况下,EurekaLog 知识库文章是您的错误消息在网络搜索中的第一次点击,它提供了所有详细信息:
问题:
编译我的应用程序时出现“不推荐使用单元 'ExceptionLog'”错误。但是,当我尝试删除此单元时 - 我收到许多“未声明的标识符”错误。
原因:
ExceptionLog 单元是来自 EurekaLog 6 的单元。它包含在 EurekaLog 7 中,用于导入旧的 EurekaLog 6 应用程序。但是,它被标记为“已弃用”以表明您的应用程序使用旧代码(即来自 EurekaLog 6 的代码)。
EurekaLog 7 使用 ExceptionLog7 单元代替(以及其他单元 - 见下文)。
解决方案:
请注意,此消息并非错误。您的应用程序将被编译并运行。它将正常运行。此消息是一个警告。通知您项目使用旧代码的警告。
在您的应用程序中使用 ExceptionLog 单元非常好。如果您有旧的 EurekaLog 项目,然后将 EurekaLog 升级到版本 7 并导入您的项目 - 它将以兼容模式导入,并将使用 ExceptionLog 单元。现在您可以重新编译您的应用程序,它应该像以前一样工作。几乎不需要更改代码。
如果您不想看到有关单元被弃用的警告 - 您可以在项目选项中关闭这些通知或使用 $WARN UNIT_DEPRECATED ON/OFF 指令选择性地为部分代码打开/关闭这些警告消息。
但是,如果要升级代码,则必须禁用兼容模式并将 ExceptionLog 引用替换为对 ExceptionLog7 单元的引用。此外,当您开始一个新项目时 - 默认情况下您将使用新单位(因为没有已经编写的代码)。
请注意,EurekaLog 7 是对 EurekaLog 6 的重大重新设计。EurekaLog 6 将几乎所有内容都包含在一个单元中(ExceptionLog),而 EurekaLog 7 将代码拆分为多个单元(例如 ECallStack、EModules、ESysInfo、EExceptionManager、EDebugInfo、ESend、 EDialog 等)。这就是为什么您可能需要在您的使用条款中额外包含其他单位。如果您收到“未声明的标识符”错误 - 则使用中缺少某些单元。您可以在 EurekaLog 安装的 \Source 文件夹中运行文件搜索,以查找包含您丢失的标识符的 *.pas 文件(这也适用于没有完整源代码的版本,因为它们包含标题)。或者,您可以研究 EurekaLog 7 中的变化。