Delphi 2007 プロジェクトで一連の「EClassNotFound」エラーが連鎖的に発生しています。よくあるケースのように、Name プロパティ値の欠落が原因ではないようです。また、初期化セクションに RegisterClass(XXX) を追加すると、EClassNotFound エラーがすぐに修正されますが、別のエラーが一見無期限に続きます。
最後に、テキスト エディターで DFM ファイルをクラックして開きましたが、破損しているように見えます (フォーム要素名に非 ASCII 文字が多数含まれており、DFM ファイルで見慣れていたものと比較すると、非常に「構造化されていない」ように見えます)。 )。(私はここに同じことを投稿しますが、非aSCIIで問題ないかどうかわからないので、延期します)。
フォームは正常にロードされ、コンパイル/構文チェックもOKのようですが、実行すると問題が発生します。
SVN の初期バージョンに戻ると、しばらくの間この状態にあるように見えます。そのため、A) DFM ファイルが問題ではないか、B) Delphi フォーム ストリーミングに問題があるかのいずれかだと思います。 -寛容/堅牢 (ボーナス質問: どちらですか?).
DFM ファイルに問題があり、破損している場合、ロールバックはロールバック WAY である必要があり、コストが高くなります。IDE がまだファイルをロードできることを考えると、ファイルをクリーンアップできるユーティリティはありますか?
それとも、DFM が主な容疑者であるということで、私は完全に基地から外れているのでしょうか?
ご意見をお寄せいただきありがとうございます。DFM ファイルのバイナリ/テキスト オプションを忘れていたので、役に立ちました。DFM 自体は破損していないようです。
ただし、まだ EClassError の問題があります。re: プロパティ値が欠落している、または存在しないプロパティを参照しているなど、さらなる質問: エラーが発生したクラスは (現在は TnxSqlUpdateObject ですが、これまでの経験が一貫している場合はおそらくもっと待っています) 通常/常に実際の「犯人」クラス/オブジェクトですか?
たとえば、現在、私のメイン フォームには TnxSqlUpdateObject への 4 つの参照があり、それらは実際にフォームにドロップされています。RegisterClass(TnxSqlUpdateObject) を初期化セクションに配置すると、その EClassNotFound エラーに対しては問題なく実行されますが、次のエラー (この場合は TStringField) に進みます。
この場合、NexusDB コンポーネントを再インストールし、問題と思われるコンポーネントのいくつかを使用して新しいプロジェクトを構築しました。実際のプロジェクトからこの他のフォームを追加するまで、コンパイルして正常に実行されます(残念ながら、他の多くのフォームを参照しています)。
SO、私の本当の問題は、すべての EClassNotFound エラーを体系的に診断して修正する方法のように思えますか?