【问题标题】:Upgrading to HTMLHelpViewer in DELPHI XE (Can't find HTMLHelpViewer.pas)在 DELPHI XE 中升级到 HTMLHelpViewer(找不到 HTMLHelpViewer.pas)
【发布时间】:2011-02-28 19:04:06
【问题描述】:

我正在从 Delphi 6 升级到 Delphi XE。在 Delphi 6 中,我使用 HTML 帮助文件 (.chm) 并使用 StoHtmlHelp 来制作它,这样我就可以像以前调用 .hlp 文件一样调用上下文相关帮助。我正在升级到 Delphi XE,所以我需要使用原生 HTML 帮助支持。

我知道我应该将 HTMLHelpViewer 添加到项目的 uses 子句中,但是当我这样做时,我收到一个编译器警告它找不到文件。

无法编译使用的单元“HTMLHelpViewer.pas”

有谁知道为什么 Delphi 默认找不到这个文件?它应该是内置的。

【问题讨论】:

    标签: delphi html-helper delphi-xe


    【解决方案1】:

    无法编译文件和找不到文件不是一回事。如果 Delphi 试图编译 HTMLHelpViewer.pas,你必须:

    • 在您的库路径中有 vcl 源文件夹(不推荐),或者
    • 另一个 HTMLHelpViewer.pas 文件位于库路径的某个位置,该路径位于标准 Delphi lib 文件夹之前,并且该 HTMLHelpViewer.pas 文件包含 Delphi XE 不满意的内容。

    第一个不太可能,如果 Delphi 不能编译它的一个单元(除了 system.pas),那确实会很奇怪。

    第二个似乎更有可能......如果该单元用于编译,那么来自 Delphi XE 的投诉很可能是由于 Delphi 6 和 Delphi XE 之间的差异。

    【讨论】:

    • 第三种可能:Delphi的编译器可以找到一个HTMLHelpViewer.dcu,但它是由不同版本的编译器编译的。 XE 的编译器希望源创建一个新的 .DCU,但在搜索或库路径中找不到它。 (例如,如果您有剩余的 D6 .DCU 并且编译器在正确的 XE 版本之前找到它,并且 XE 找不到源文件,就会发生这种情况。)
    【解决方案2】:

    您实际上不需要将其添加到 .dpr 文件的 uses 子句中——您只需要在项目中的某个单元中使用它即可。

    话虽如此,您实际上可能更喜欢将其添加到您的 .dpr 文件中,如果是这样,请这样做:

    uses
      Forms,
      HtmlHelpViewer,
      MyUnit in 'MyUnit.pas',
    

    我猜你有这样的东西:

    uses
      Forms,
      HtmlHelpViewer in 'C:\Program Files\Borland\Delphi6\Source\VCL\HtmlHelpViewer.pas',
      MyUnit in 'MyUnit.pas',
    

    这将失败,因为您要求 XE 编译 D6 源代码。

    对于 RTL/VCL 单元,最好省略文件路径并让编译器找到它(它知道在哪里查找)。

    【讨论】:

    • 其实编译器不知道去哪里找。在我完全尝试了您提到的内容后,我发布了这个问题。我在 uses 子句中添加了 HTMLHelpViewer,没有路径信息,Delphi 因此错误而失败。
    • 去掉编译器要编译的文件版本,让它链接到delphi附带的dcu。然后你会发现编译器确实知道去哪里找!
    • 我不得不删除 .pas 文件和 .dcu .. 但它有效。谢谢大卫。
    • 我认为您应该接受另一个答案,因为我相信 Marjan 的第二个要点描述了您的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2011-05-28
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2011-12-26
    相关资源
    最近更新 更多