Проблема Delphi XE6 со стилизованными меню и madExcept
Я столкнулся с действительно странным поведением Delphi VCL Styles. При включенных стилях VCL, и когда в madExcept включена опция "мгновенный сбой при переполнении буфера", меню становятся нестандартными.
Отключение этой опции или переключение на "мгновенный сбой в буфере UNDERrun" устраняет проблему с меню.
Вопросы: кто-нибудь еще сталкивался с этой проблемой? Почему это происходит и как это исправить?
2 ответа
Эта проблема вызвана внутренним вызовом GetClassName
Функция WinAPI. Я только что проверил и загрузил исправление для этого. Таким образом, вы можете скачать последнюю версию проекта VCL Styles Utils из репозитория, а затем добавить модули Vcl.Styles.Utils.Menus
, Vcl.Styles.Utils.SysControls
а также Vcl.Styles.Utils.SysStyleHook
в свой проект и, наконец, прокомментируйте или удалите строку (27) {$UNDEF UseVCLStyleUtilsMenu}
в модуле Vcl.Styles.Utils.Menus.
Это, кажется, указывает мне, что у кода стилей VCL есть переполнение буфера. Менеджер памяти madExcept преуспел в том, чтобы переполнение буфера проявилось как исключение. В свою очередь код стилей отвечает отключением стилей.
Следующий шаг - запустить код под отладчиком с включенными отладочными DCU, чтобы вы могли отлаживать код VCL. Надеемся, что отладчик поймает исключение и затем выделит переполнение буфера.
Если вам удалось выявить проблему, вы можете обойти ее и отправить отчет об ошибке в QC.