首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi11 TShellTreeView在应用程序启动时导致Win64平台上的访问冲突

Delphi11 TShellTreeView在应用程序启动时导致Win64平台上的访问冲突
EN

Stack Overflow用户
提问于 2022-10-24 14:40:24
回答 1查看 105关注 0票数 -2

当窗体初始化时,TShellTreeView组件在Vcl.Shell.ShellCtrls单元中的TWinControl.DefaultHandler()组件在应用程序启动时会导致Win64平台上的访问冲突。

要复制这个bug:

  1. 创建一个新的VCL窗体应用程序,并将一个TShellTreeView组件放到表单上。或者,将这个最小的项目源代码粘贴到一个名为“ShellTreeViewTest.dpr”的文件中,然后使用Delphi打开项目:

程序ShellTreeViewTest;使用Vcl.Forms、Vcl.Controls、Vcl.Shell.ShellCtrls;var表单: TForm;begin Application.Initialize;Application.CreateForm(TForm,Form);with TShellTreeView.Create(Form) do父:=窗体;Application.Run;end.

然后

  1. 将平台“Windows64位”添加到项目中.

  1. 编译并运行.

我用德尔菲11.1亚历山大。

只有在项目选项/链接选项卡中启用“支持高熵64位地址空间布局随机化(ASLR)”时,访问冲突才会引发

  • 。默认情况下它是启用的,因此在Delphi11.
  • 中该错误是可复制的,但是在XE2中,项目选项中没有这样的复选框.

EN

回答 1

Stack Overflow用户

发布于 2022-10-24 14:40:24

AV是由TCustomShellTreeView.FImages: Integer;字段引起的:它由SHGetFileInfo()调用初始化,但该函数返回DWORD_PTR。用FImages: Integer代替FImages: DWORD_PTR解决了这一问题。

我认为TCustomShellComboBox.FImages也应该改变。

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

https://stackoverflow.com/questions/74182825

复制
相关文章

相似问题

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