C++Builderで作成したフォームを使いまわそうとコピー&リネームしたら変なエラーが出るようになった。
モジュール BetaForm でエラーが発生しました。
TFormAlphaクラスの宣言が無いか間違っています
それでも保存しますか?
なんのこっちゃ?
リネーム作業はソースコードを開いて名前の部分を片っ端から置換している。なにか、置換し忘れているのかとソースコードを眺めても問題はなさそう。しかもメッセージを無視すればビルドも通るのに、なぜにエラーになるのかナゾ?
クラスの宣言もあるし、間違いもないぞ、なぜなんだ?
沈思黙考すること2昼夜。←解決できずに他のことやってた。
そういや.cpp/.hは編集したけど、.dmfは何も手を加えていなかったことに気が付く。
名前をリネームしたフォームの.dmfファイルをエディターで開くと最初の行に以下のような記載が見つかる。あー、やっぱり、こいつが犯人だ。
object FormAlpha: TFormAlpha
たぶん、これが前の名前を参照しているのが問題。新しい名前に書き換えて保存。(←やっていいのかは自己責任で判断)
こんな感じに修正。
object FormBeta: TFormBeta
C++Builderでプロジェクトを開きなおしたら、今度はエラーが出なくなりました。(開きなおさないと、ちゃんと再読み込みしてくれないようなので注意)
動作環境のメモ
Windows7 Professional
Embarcadero RAD Studio 2011(C++Builder2010)
IDE使って編集したのにdmfが修正されなかったんですか?
言われて見ればその通り。フォームの定義もソースコードに埋まってると思い込んでたんで2日間も悩んでだけど、IDEをよく見たらフォームの名前を変更できそうなインターフェースあったよ。とほほ、orz
モデルビューでフォームの名前(クラス名)を変えられると思ったものの、変わるのはクラス宣言のみ。残念。
IDEで来そうな気はするものの、見つけられない。