• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EAccessViolationエラーの生成)

EAccessViolationエラーの生成

このQ&Aのポイント
  • C++Builder 5.0でプログラムを作成し、Form1~Form3を作成し、Form1を自動生成の対象及びメインフォームとしました。Form1にはボタン1、Form2にはボタン2を用意し、ボタン1からはForm2を、ボタン2からはForm3を開くことが出来るようにしました。Form1のボタン1にはTForm2 *Form2 = new TForm2(Application); Form2->Show(); Form1->Hide();と記述し、Form2のボタン2にはTForm3 *Form3 = new TForm3(Application); Form3->ShowModal(); ← Form3はモーダルフォームと記述しました。Form1とForm2のPublic部にint型の変数iとjを用意し、Form3からForm1->i = 5; Form2->j = 5; という様に値を代入するとForm1の時はうまく代入できるのですが、Form2の変数に代入すると「Project1.exeがEAccessViolationクラスの例外を生成しました …」というエラーメッセージが表示されてしまいます。
  • この原因は何でしょうか。
  • なお、各フォームのヘッダファイルのインクルードはきちんと行っています。OSはWindows98です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Form3を表示したときForm2がどういう挙動を取るのか説明がないので 何とも言えないですが、もしClose();とかdelete Form2; されてたりするのであればForm2のインスタンスは破棄されている 可能性が高いので例外はスローされますよね? というわけで補足を求めます。Form2はForm3がShowModal時は 画面に表示されているのでしょうか。

Richi
質問者

補足

御返事ありがとうございました。 Form2はそのまま表示しています。 しかしながら、色々と試してみたのですが、 Close()してdelete()したときと、 表示したままの時での違いはありませんでした。

関連するQ&A

専門家に質問してみよう