X1033 ユニット '%s' が暗黙のうちにパッケージ '%s' にインポートされました(Delphi)
エラーと警告のメッセージ(Delphi) への移動
この警告は、現在コンパイル中のパッケージにユニットが暗黙的にリンクされたことを示します。通常、ユニットは次のいずれかの方法でパッケージに関与します。
- "Contains" フォルダを通じて明示的にインポートする
- 別のパッケージの一部を "Requires" フォルダで指定する
コンパイルに必要なユニットが "Contains" フォルダの中にも "Requires" フォルダで指定されたパッケージの中にも見つからない場合、そのユニットは、あたかも "Contains" フォルダに含まれているかのように暗黙的にインポートされます。
この警告は、ユニットをパッケージに明示的に追加するか、足りないユニットを含んでいるパッケージへの参照を追加することを検討するよう、プログラマに知らせるためのものです。
今後この問題が起きないようにするには、.dcp ファイル(パッケージのコンパイルおよびリンクに関する情報を含んでいるファイル)を下記の Requires または Contains 句/フォルダに追加する必要があります。
- Requires フォルダは、通常、このパッケージをコンパイルするのに必要なユニットを含んでいる他のパッケージを参照します。これらのパッケージは、System ユニットや SysUtils ユニットなどを含んだ RTL パッケージのように Delphi から提供されるパッケージでもよいし、ユーザー定義ユニットを含んだプログラマ作成のパッケージでもかまいません。
- Contains フォルダには、パッケージに組み込まれるユニットが含まれています。"Requires" フォルダに挙げられている他のパッケージにあるユニットは含まれません。
問題の解決
コード エディタでは、コードを必要に応じて編集することにより、"requires" 句や "contains" 句にユニットを追加できます。[プロジェクト マネージャ]では、次のようにして、[Requires]フォルダや[Contains]フォルダにユニットを追加できます。
[プロジェクト マネージャ]で[Requires]フォルダに参照を追加するには:
- [Requires]フォルダを右クリックします。
- コンテキスト メニューから[参照の追加...]を選択します。
- [追加]ダイアログで、適切な .dcp ファイルを選択します。あるいは、ファイルが検索パスに含まれている場合は、参照するプロジェクトの .dcp ファイル名をただ入力します。
- これで、.dcp ファイルがプロジェクトの[Requires]フォルダに追加されます。
[プロジェクト マネージャ]で[Contains]フォルダにユニットを追加するには:
- [Contains]フォルダを右クリックします。
- 次のいずれかを行います。
- コンテキスト メニューから[新規追加|ユニット]を選択して、[Contains]フォルダに空のユニットを追加します(コード エディタにはユニット コードのテンプレートが表示されます)。
- コンテキスト メニューから[追加...]を選択して、[プロジェクトに追加]ダイアログを表示します。追加するユニットの .pas ファイルを選択します。
例
たとえば、次のプログラムで、Classes
では、consts
、TypInfo
、SysUtils
を(直接的または間接的に)使用しています。
package Produce;
contains Classes;
end.
使用されるこれらのユニットごとに、警告メッセージが表示されます。
次のプログラムでは、パッケージにインポートされるこれらのユニットをすべて contains
句で明示的に指定することにより、この問題を解決しています。
package Solve;
contains consts, TypInfo, SysUtils, Classes;
end.