Iこれはコンパイルが、私は、次のヒントVCLプロジェクトには同じクラス名で異なる名前空間を持つ2つのフォームがありますか?
[DCC32ヒント] H2161警告得る2つの異なる名前空間で同じクラス名で
FirstNameSpace.ExampleFormName.TExampleFormName SecondNameSpace.ExampleFormName.TExampleFormName
2つのフォームを作成しようとした:重複リソース:タイプ10 (RCDATA)、ID TEXAMPLEFORMNAME;ファイル FirstNameSpace.ExampleFormName.TExampleFormName.DFMリソースが保持されます。 ファイルSecondNameSpace.ExampleFormName.TExampleFormName.dfmリソース が破棄されました。
TExampleFormName
を参照するとプログラムがクラッシュします。
リンカが正常に動作するのに十分な情報がないようです。
この方法を使用する方法はありますか?
2番目の 'TExampleFormName'を' TExampleFormName2'に変更してリソースの競合を止め、 'type TExampleFormName = class(TExampleFormName2);を追加しても動作しますか? –
私が提案したようにキャストを試みました。 プログラムはヒントなしでコンパイルされます。 しかし、実行時の動作は非常に奇妙です。 ExampleFormName1とExampleFormName2に同じ名前のコンポーネントが含まれていると、プログラムがEComponentError例外でクラッシュする - whateverという名前のコンポーネントが既に存在する。 ExampleFormName1とExampleFormName2に同じ名前のコンポーネントが含まれていない場合:BOTH dfmsのコンポーネントが単一のフォームに表示されます。 –
競合の問題は、DelphiよりもWindowsと関連しています。その背後では、アプリケーションはWindowsにフォームを登録し、WindowsはDelphiのような名前空間を認識しません。 – Dsm