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