0

Delphi VCL スタイルの非常に奇妙な動作に直面しました。VCL スタイルを有効にして、madExcept で「バッファ オーバーラン時に即座にクラッシュ」オプションを有効にすると、メニューのスタイルが適用されなくなります。

このオプションをオフにするか、「バッファー UNDERrun で即座にクラッシュする」に切り替えると、メニューの問題が修正されます。

質問は次のとおりです。他の誰かがこの問題に遭遇しましたか? なぜそれが起こり、どのように修正するのですか?

4

2 に答える 2

4

GetClassNameこの問題は、 WinAPI 関数への内部呼び出しが原因で発生します。そのための修正をテストしてアップロードしました。そのため、 VCL Styles Utilsプロジェクトの最新バージョンをリポジトリVcl.Styles.Utils.Menusからダウンロードし、ユニットをプロジェクトVcl.Styles.Utils.SysControlsに追加して、最後にVcl.Styles.Utils.MenusユニットVcl.Styles.Utils.SysStyleHookの行 (27) をコメント化または削除できます。{$UNDEF UseVCLStyleUtilsMenu}

于 2014-08-23T15:24:58.757 に答える
0

これは、VCL スタイル コードにバッファ オーバーランがあることを示しているようです。madExcept メモリ マネージャーは、そのバッファー オーバーランを例外としてマニフェストにすることに成功しています。次に、スタイル コードはスタイルを無効にすることで応答します。

次のアクションは、VCL コードをデバッグできるようにデバッグ DCU を有効にして、デバッガーでコードを実行することです。デバッガーが例外をキャッチして、バッファー オーバーランを強調表示することを願っています。

問題の特定に成功した場合は、回避策を作成して QC にバグ レポートを送信できます。

于 2014-08-23T07:45:26.763 に答える