特定のユニットが Delphi プログラムにコンパイルされているかどうかを判断できるようにしたいと考えています。たとえば、ユニット SomeUnitName は、一部のプログラムの一部であり、他のプログラムの一部ではありません。機能をつけたい
function IsSomeUnitNameInProgram: boolean;
(もちろん SomeUnitName では宣言されていません。なぜなら、その場合は常に含まれるからです) 実行時に、ユニットがプログラムにコンパイルされている場合は true を返し、そうでない場合は false を返します。
これまでの私の考えは、jcl デバッグ情報 (詳細なマップ ファイルからコンパイルされたもの) を使用して、基本的にすべてのプログラムに追加してこの情報を判別するというものでしたが、jcl が必要ない場合は、それを使用することをお勧めします。
コードを SomeUnitName に追加することはできません。
これは現在 Delphi 2007 用ですが、できれば Delphi XE2 でも動作するはずです。
何かご意見は?
@DavidHeffernanが尋ねたので、これに関するいくつかの背景:
これは、1 つのプログラムだけでなく、100 以上の異なるプログラムに適用されます。それらのほとんどは社内で使用されますが、顧客に配布されるものもあります。私たちはかなりの数のライブラリを使用しているため、いくつかはさまざまなオープン ソース ライセンスの下で他のライブラリを購入したため、すべてではなく実際にプログラムにコンパイルされたライブラリのみを表示する「クレジット」タブをアバウト ボックスに追加できるようにしたいと考えました。TOndrej からの回答のおかげで、これは私が望んでいたとおりに機能するようになりました。プログラムでライブラリが使用されている場合、コードは常にリンクされているユニットをチェックし、そこにある場合は、ライブラリ名、著作権、およびアバウト ボックスにリンクします。