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です。御回答をどうかよろしくお願いします。

A 回答 (1件)

Form3を表示したときForm2がどういう挙動を取るのか説明がないので


何とも言えないですが、もしClose();とかdelete Form2;
されてたりするのであればForm2のインスタンスは破棄されている
可能性が高いので例外はスローされますよね?

というわけで補足を求めます。Form2はForm3がShowModal時は
画面に表示されているのでしょうか。

この回答への補足

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

補足日時:2001/03/19 00:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ