1

Delphi 2007 でデザインタイム パッケージを作成しています。

Events複数のユニットで使用できるように、いくつかのイベント型宣言を独自のユニットに移動することにしました。私がやったとき、コンパイラはUndeclared identifier: 'Event Name'、これらのイベントが最初に宣言されたユニットで不平を言い始めました。型宣言はすべてユニットのinterfaceセクションにあり、ユニットを他のユニットの uses 句にEvents追加しましたが、コンパイラがユニットを完全に無視しているようです。EventsEvents

CTRL別のユニットから型名を + クリックすると、IDE は宣言を見つけるのに問題はありません。型名の上にマウスを置くと、宣言されている単位とそのパラメーターが表示されます。通常は無愛想で妄想的なIDE のError Insight機能でさえ、問題を認識しません。コンパイラだけがそれについて文句を言います。

この問題を別のより単純なパッケージ プロジェクトで再現して分離しようとしましたが、再現できません。

他の誰かが以前にこの動作を見たことがありますか?回避策はありますか?

4

1 に答える 1

4

ファイルがプロジェクト内にあり、他のユニットの uses 句にあることを確認するなど、常識的な提案をすべて試しました。

誰も解決策を投稿していないので、Ken WhiteWouter van Nifterick の提案を試しました。

  • プロジェクトを閉じて IDE を再起動しました - 変化なし
  • システム上のすべてのドライブで Events.pas または Events.dcu を検索しました - 私のプロジェクトのドライブは 1 つだけでした。

うまくいった唯一の方法は、理由はわかりませんが、Events.pa の名前を別の名前に変更することでした。Project Manager を使用して名前を変更し、再コンパイルしました。すべてのUndeclared Identifierエラーが単に消えました。名前を に戻したところEvents、エラーが再発しました。誰かわかったね?

好奇心から、システム上のすべての pas および inc ファイルをテキスト検索して、Eventsがどこかで識別子として使用されているかどうかを確認しました (違いがないことはわかっていますが、わかりません)。何もない。と呼ばれる変数、型、または関数はありませんEvents

健全性チェックとして、少数のユニットを含む単純なプロジェクトを作成しました。そのうちの 1 つはEvents、いくつかの型宣言で呼び出されました。他のすべてのユニットは、それを uses 句に含めました。コンパイラは型識別子を問題なく解決できました。Events他のプロジェクトでユニットが詰まった理由がまったくわかりません。

アップデート

なぜこのエラーが発生したのか、ようやくわかりました。私が書いていたパッケージはオープンツールの api(OTA) を使用していたので、DesignIDEパッケージが必要でした。DesignIDEプリコンパイル済みの dcp および bpl としてのみ提供されているため、IDE の拡張ポイントとして公開されている少数のインターフェイス ユニットを除いて、すべてのソースが欠落しています。にコンパイルされた隠しユニットの 1 つDesignIDEが呼び出されていることがわかりEventsます。パッケージを新しいバージョンの Delphi に移行し、E2200 Package 'designide' already contains unit 'Events'. このエラー メッセージは、Delphi 2007 では表示されませんでした。

より単純なパッケージで問題を切り分けようとしても、DesignIDEパッケージを依存関係から除外していたため、それがエラーの原因であることに気づかずに、問題を再現できませんでした。

于 2013-03-22T18:25:24.133 に答える