在DELPHI XE中升级到HTMLHelpViewer(无法找到HTMLHelpViewer.pas)
我正在从Delphi 6升级到Delphi XE。在Delphi6中,我使用HTML帮助文件(.chm),并使用StoHtmlHelp来创建它,这样我就可以像调用.hlp文件一样调用上下文相关的帮助。我正在升级到Delphi XE,所以我需要使用本机HTML帮助支持 我知道我应该将HTMLHelpViewer添加到项目的uses子句中,但是当我添加时,我得到一个编译器警告,它找不到该文件 无法编译使用的单元“HTMLHelpViewer.pas”在DELPHI XE中升级到HTMLHelpViewer(无法找到HTMLHelpViewer.pas),delphi,html-helper,delphi-xe,Delphi,Html Helper,Delphi Xe,我正在从Delphi 6升级到Delphi XE。在Delphi6中,我使用HTML帮助文件(.chm),并使用StoHtmlHelp来创建它,这样我就可以像调用.hlp文件一样调用上下文相关的帮助。我正在升级到Delphi XE,所以我需要使用本机HTML帮助支持 我知道我应该将HTMLHelpViewer添加到项目的uses子句中,但是当我添加时,我得到一个编译器警告,它找不到该文件 无法编译使用的单元“HTMLHelpViewer.pas” 有人知道Delphi在默认情况下找不到此文件的原
有人知道Delphi在默认情况下找不到此文件的原因吗?它应该内置。不能编译文件和找不到文件不是一回事。如果Delphi试图编译HTMLHelpViewer.pas,则必须:
- 将vcl源文件夹放在库路径上(不推荐),或
- 另一个HTMLHelpViewer.pas文件位于库路径的某个位置,该路径位于标准Delphi lib文件夹之前,该HTMLHelpViewer.pas文件包含Delphi XE不满意的内容
第二个似乎更有可能。。。如果该单元用于编译,Delphi XE的投诉很可能是由于Delphi 6和Delphi XE之间的差异。不能编译文件和找不到文件不是一回事。如果Delphi试图编译HTMLHelpViewer.pas,则必须:
- 将vcl源文件夹放在库路径上(不推荐),或
- 另一个HTMLHelpViewer.pas文件位于库路径的某个位置,该路径位于标准Delphi lib文件夹之前,该HTMLHelpViewer.pas文件包含Delphi XE不满意的内容
第二个似乎更有可能。。。如果该单元用于编译,那么Delphi XE的抱怨很可能是由于Delphi 6和Delphi XE之间的差异。您实际上不需要将其添加到.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',
我猜你有这样的东西:
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单元,最好省略文件的路径,让编译器找到它(它知道在哪里查找)。您实际上不需要将它添加到.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',
我猜你有这样的东西:
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单元,最好省略文件路径,让编译器找到它(它知道在哪里查找)。第三种可能性:Delphi的编译器可以找到一个HTMLHelpViewer.dcu,但它是由不同版本的编译器编译的。XE的编译器希望源代码创建一个新的.DCU,但在搜索或库路径中找不到它。(例如,如果您有一个D6.DCU剩余,并且编译器在正确的XE版本之前找到了它,而XE找不到源文件,则可能会发生这种情况。)第三种可能性:Delphi的编译器可以找到一个HTMLHelpViewer.DCU,但它是由不同版本的编译器编译的。XE的编译器希望源代码创建一个新的.DCU,但在搜索或库路径中找不到它。(例如,如果您有一个D6.DCU剩余,并且编译器在正确的XE版本之前找到了它,而XE找不到源文件,则可能会发生这种情况。)实际上,编译器不知道在哪里查找。在我完全尝试了你提到的内容之后,我发布了这个问题。我在uses子句中添加了HTMLHelpViewer,但没有路径信息,Delphi因此错误而失败。我们将删除编译器要编译的文件版本,并让它链接到Delphi附带的dcu。然后您会发现编译器确实知道在哪里查找!我不得不删除.pas文件和.dcu。。但它奏效了。谢谢David。在我看来,你应该接受另一个答案,因为我相信Marjan的第二个要点描述了你的问题。事实上,编译器不知道去哪里找。在我完全尝试了你提到的内容之后,我发布了这个问题。我在uses子句中添加了HTMLHelpViewer,但没有路径信息,Delphi因此错误而失败。我们将删除编译器要编译的文件版本,并让它链接到Delphi附带的dcu。然后您会发现编译器确实知道在哪里查找!我不得不删除.pas文件和.dcu。。但它奏效了。谢谢David。我认为你应该接受另一个答案,因为我相信Marjan的第二个要点描述了你的问题。