【发布时间】:2014-10-17 00:52:03
【问题描述】:
我遇到了 Delphi VCL Styles 的一个非常奇怪的行为。启用 VCL 样式后,当 madExcept 激活“缓冲区溢出时立即崩溃”选项时,菜单将变为非样式。
关闭此选项或将其切换为“在缓冲区 UNDERrun 时立即崩溃”可修复菜单问题。
问题是:有没有其他人遇到过这个问题?为什么会发生以及如何解决?
【问题讨论】:
标签: delphi delphi-xe6 vcl-styles madexcept
我遇到了 Delphi VCL Styles 的一个非常奇怪的行为。启用 VCL 样式后,当 madExcept 激活“缓冲区溢出时立即崩溃”选项时,菜单将变为非样式。
关闭此选项或将其切换为“在缓冲区 UNDERrun 时立即崩溃”可修复菜单问题。
问题是:有没有其他人遇到过这个问题?为什么会发生以及如何解决?
【问题讨论】:
标签: delphi delphi-xe6 vcl-styles madexcept
这似乎表明 VCL 样式代码存在缓冲区溢出。 madExcept 内存管理器成功地使缓冲区溢出显示为异常。反过来,样式代码通过禁用样式来响应。
下一步是在调试器下运行代码,并启用调试 DCU,以便您可以调试 VCL 代码。希望调试器能够捕获异常,然后突出显示缓冲区溢出。
如果您成功确定了问题,您可以制定解决方法并向 QC 提交错误报告。
【讨论】:
此问题是由对 GetClassName WinAPI 函数的内部调用引起的。我刚刚对此进行了测试并上传了一个修复程序。因此,您可以从repository 下载VCL Styles Utils 项目的最新版本,然后将单元Vcl.Styles.Utils.Menus、Vcl.Styles.Utils.SysControls 和Vcl.Styles.Utils.SysStyleHook 添加到您的项目中,最后注释或删除Line (27) {$UNDEF UseVCLStyleUtilsMenu}在Vcl.Styles.Utils.Menus 单元中。
【讨论】: