我希望能够确定一个特定的单元是否已被编译到 Delphi 程序中,例如单元 SomeUnitName 是我的一些程序的一部分,但不是其他程序的一部分。我想要一个功能
function IsSomeUnitNameInProgram: boolean;
(当然没有在 SomeUnitName 中声明,因为在这种情况下它总是被包含在内)如果单元已编译到程序中,则在运行时返回 true,否则返回 false。
到目前为止,我的想法一直是使用 jcl 调试信息(从详细的映射文件编译而来),我基本上将其添加到所有程序中以确定此信息,但如果不需要 jcl,我更喜欢它。
向 SomeUnitName 添加代码不是一种选择。
这目前适用于 Delphi 2007,但最好也适用于 Delphi XE2。
有什么想法吗?
自从@DavidHeffernan 问起这方面的一些背景:
这不仅适用于一个程序,而且适用于 100 多个不同的程序。其中大部分在内部使用,但也有一些交付给客户。由于我们使用了很多库,有些人在各种开源许可证下购买了其他库,我希望能够在 about 框中添加一个“credits”选项卡,该选项卡仅显示那些实际编译到程序中的库,而不是所有库。多亏了 TOndrej 的回答,这现在完全按照我的意愿工作了:如果程序使用了一个库,代码会检查一个总是链接的单元,如果它在那里,它会添加库名称、版权和一个链接到关于框。