首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在.chm文件(html帮助)中描述了两次AKeyword,则用于Delphi的XE2应用程序将冻结

如果在.chm文件(html帮助)中描述了两次AKeyword,则用于Delphi的XE2应用程序将冻结
EN

Stack Overflow用户
提问于 2013-04-05 03:13:59
回答 2查看 619关注 0票数 1

我们使用以下代码在Delphi XE2的应用程序上通过A-links调用html help:

代码语言:javascript
复制
var
  aLink: THH_AKLink;
begin
  ZeroMemory(@aLink, SizeOf(aLink));
  aLink.cbStruct := SizeOf(aLink);
{$WARNINGS OFF}
  aLink.pszKeywords := PChar(AnsiString(AKeyword));
{$WARNINGS ON}
  aLink.fIndexOnFail := False;
  HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@aLink))
end;

但是,如果在.chm文件中描述AKeyword两次,应用程序就会冻结(挂起)。在Delphi或系统库上似乎有什么问题。但是如何在应用程序上修复这个问题呢?

非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-08 01:27:41

目前最好的答案是删除CHM-file上所有重复的A-link,并确保上面没有重复的A-link。

票数 0
EN

Stack Overflow用户

发布于 2013-04-27 07:32:27

您正在使用第三方应用程序2 ALink将两次添加到已编译的chm文件中。

那么,当chm文件没有按预期工作时,你会责怪Delphi XE2吗?

1。)不能将AKeyword与一起使用

代码语言:javascript
复制
HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@aLink))

您可以使用KLink关键字进行尝试:

代码语言:javascript
复制
HtmlHelpW(Handle, Application.HelpFile+'>main', HH_DISPLAY_TOPIC, DWORD_PTR(nil));
HtmlHelpW(Handle, Application.HelpFile, HH_KEYWORD_LOOKUP, DWORD_PTR(@link));

ALink是他在这里的外观的一个跳跃,以及KLink显示或相关主题的跳跃。

但是,找到的主题列表不是基于索引中的关键字,而是基于.htm文件中涉及的ALink names

这只能与ALinks一起使用。下面是一个ALink。

xy.htm的一部分

代码语言:javascript
复制
<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
    <param name="ALink Name" value="UsingtheMenus">
</OBJECT>

2。)在您的代码中,我看不到以下内容:

代码语言:javascript
复制
HtmlHelpW(Handle, Application.HelpFile, HH_DISPLAY_TOPIC, DWORD_PTR(nil));

  • 您必须先调用HH_DISPLAY_TOPIC命令,然后再调用HH_ALINK_LOOKUP,以确保创建了帮助窗口。

HH_ALINK_LOOKUP command

关键字帮助作者使用feature.

  • ALink帮助编译器信息value="lookupAlink"

  • KLink : name="ALink Name“value=”lookupAlink“

  • KLink: ALink”value="lookupKeyword“

将关键字名称插入到目标主题文件中

查找区分大小写。多个查找由分号分隔。

除了自动生成的关键字,在编译.htm源文件时。

你能使用显式的KLink吗。

这是一个显式的"KLink“该位置可以位于.htm文件中的任何位置,用于关键字

代码语言:javascript
复制
<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
    <param name="Keyword" value="lookupKeyword">
</OBJECT>

如果出现错误消息,则会创建有益的消息,系统会显示错误,并且应用程序将继续正常运行。来源:答案How to add support of HTML help files (.chm)....

代码语言:javascript
复制
procedure TForm1.HHALINKLOOKUPClick(Sender: TObject);
var
link : HH_AKLINK;
szUrl,szKey,szMsgText,szMsgTitle,szWindow : AnsiString;
begin
   szKey      := Edit1.Text; // 'UsingtheMenus';
   szUrl      :='Overview.htm';
   szMsgText  :='Error: Can''t find "'+Edit1.Text+'"!';
   szMsgTitle :='Error: HH_ALINK_LOOKUP';
   szWindow   :='main';

   with link do begin
   cbStruct    := sizeof(HH_AKLINK) ;
   fReserved   := False;
   pszKeywords := PChar(szKey);
   pszUrl      := nil;
   pszMsgText  := PChar(szMsgText);
   pszMsgTitle := PChar(szMsgTitle);
   pszWindow   := PChar(szWindow);
   fIndexOnFail:= False;
   end;
   HtmlHelpW(Handle, Application.HelpFile+'>main', HH_DISPLAY_TOPIC, DWORD_PTR(nil));
   HtmlHelpW(Handle, Application.HelpFile, HH_ALINK_LOOKUP, DWORD_PTR(@link));
end;

当你ALink "UsingtheMenus“调用没有最后一个字母"s”时,你会得到这样的结果。

测试您的:与第三方应用程序更改的chm文件

你可以用超文本标记语言帮助工作坊测试任何.chm文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15819792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档