Проблема 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.

Другие вопросы по тегам