Access violationエラー発生時の対処方法(解消済)
Q&A
Closed
前提・実現したいこと
使用言語:Delphi+C#
IDE:Rad Studio10.2で構築されたプロジェクトを10.4に移行して開発。
C#はクラスライブラリとして生成し、COM相互運用はOFFに、COM参照可能にチェックボックスONにしてビルド。
OS:Windows10
Rad Studio10.4でビルドしたモジュール'xxxxxx.exe'を実行したら、下記エラーが表示され処理ができません。
上記エラーが発生した場合の確認方法や確認手段、疑うべき部分、手順などを教えて下さい。
発生している問題・エラーメッセージ
Access violation at address 0066472F in module 'xxxxxx.exe'.Read of addres 0000007C.
該当のソースコード
Delphi(XXX.pas)の画面部品初期化(イニシャライズ)部分で発生。
試したこと
メインモジュールの表示処理で、「メインモジュールのuses句で結合している『インストール済設計時パッケージ』」の一部がnilになり、nilになった結果、nil部品の内部プロパティをセットしようとし、「Access violation」が出力されているところまで分かったが、
・問題のある設計時パッケージはRad Studio10.4で正常インストールされており、「設計時パッケージ一覧に表示されている」
・問題のあるパッケージを直接プロジェクトファイルをRad Studio10.4で開いてクリーンアップ&ビルド正常終了
・Rad Studio10.4でデバッグ実行時に、「Access violation」エラー発生
・Rad Studio10.4でビルドしたモジュールexeを起動させた場合も、「読み取り違反」エラーが発生
・今回の問題の発生直前で変更したポイントは「Rad Studioを10.2⇒10.4に変更」(ビルド端末には.NET3.5.2と4系では.NET4.6までが導入されいてる)
・「Access violation」エラーが発生した際、デバッガでコンポーネントの追加をモジュール画面から行ったが「読み込めなかった」
・当該モジュールのコンパイル指定はRad Studio2007のコンパイルバージョンが最高値(VCL4)だった。Rad Studio10.4で再ビルドしたがエラー解消せず。
・今回の問題の発生直前で変更したポイントは「Rad Studioを10.2⇒10.4に変更」(ビルド端末には.NET3.5.2と4系では.NET4.6までが導入されいてる)
・「Access violation」エラーが発生した際、デバッガでコンポーネントの追加をモジュール画面から行ったが「読み込めなかった」
・当該モジュールのコンパイル指定はRad Studio2007のコンパイルバージョンが最高値(VCL4)だった。Rad Studio10.4で再ビルドしたがエラー解消せず。
・OracleクライアントのDLLなど他のモジュールは読み込めている。
・データベースアクセスを行うpasモジュールをデザイナで開こうとすると『TQueryがない』旨の、Rad Studioのエラーポップアップ表示
・問題が起きているモジュールはRad Studio10.2、.NET3.5では「ビルド後のモジュールで起動、動作できていた」
・Rad Studio10.4にバージョンアップ、設計時パッケージ一覧をエンバカデロ提供「移行ツール」で移行した。
・問題発生後、「設計時パッケージ一覧」から項目削除、当該モジュールをクリーンアップ&ビルド後にパッケージのインストールで正常登録を確認。
・クリーンアップ&ビルド後に再度デバッガで起動確認を行ったところ、当該モジュールのインスタンスをセットしているタイミングで、セットの元の中身がnilだった。
・BDEを再インストール後、RadStudioにパッケージインストール、再ビルドを行ったが実行時エラーは変わらず。