クラスの宣言が無いか間違っています

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)