Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在DELPHI XE中升级到HTMLHelpViewer(无法找到HTMLHelpViewer.pas)_Delphi_Html Helper_Delphi Xe - Fatal编程技术网

在DELPHI XE中升级到HTMLHelpViewer(无法找到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 6升级到Delphi XE。在Delphi6中,我使用HTML帮助文件(.chm),并使用StoHtmlHelp来创建它,这样我就可以像调用.hlp文件一样调用上下文相关的帮助。我正在升级到Delphi XE,所以我需要使用本机HTML帮助支持

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

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


有人知道Delphi在默认情况下找不到此文件的原因吗?它应该内置。

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

  • 将vcl源文件夹放在库路径上(不推荐),或
  • 另一个HTMLHelpViewer.pas文件位于库路径的某个位置,该路径位于标准Delphi lib文件夹之前,该HTMLHelpViewer.pas文件包含Delphi XE不满意的内容
第一个是不可能的,如果Delphi不能编译它的一个单元(除了system.pas),那将是非常奇怪的


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

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

  • 将vcl源文件夹放在库路径上(不推荐),或
  • 另一个HTMLHelpViewer.pas文件位于库路径的某个位置,该路径位于标准Delphi lib文件夹之前,该HTMLHelpViewer.pas文件包含Delphi XE不满意的内容
第一个是不可能的,如果Delphi不能编译它的一个单元(除了system.pas),那将是非常奇怪的


第二个似乎更有可能。。。如果该单元用于编译,那么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的第二个要点描述了你的问题。