我希望能够确定某个单元是否已编译进 Delphi 程序中,例如,单元 SomeUnitName 是我的某些程序的一部分,但不是其他程序的一部分。我想要一个函数。
function IsSomeUnitNameInProgram: boolean;
如果在SomeUnitName中声明,它将总是被包含,因此未在SomeUnitName中声明 (which is of course not declared in SomeUnitName because in that case it would always be included) 。在运行时返回true,如果该单元已编译进程序,则返回false。
目前我的想法是使用jcl调试信息(从详细的映射文件编译而来),我基本上将其添加到所有的程序中以确定这些信息,但是我希望不需要使用jcl。
向SomeUnitName添加代码不是一个选项。
目前是针对Delphi 2007,但最好也适用于Delphi XE2。
@DavidHeffernan问及一些背景信息:
这不仅仅是为了一个程序,而是为了100多个不同的程序。其中大部分是内部使用的,但有些也会交付给客户。由于我们使用了相当多的库,一些是购买的,其他则是在不同的开源许可证下发布的,因此我想能够向"关于"对话框中添加一个"致谢"选项卡,仅显示实际编译到程序中的那些库,而不是所有库。感谢TOndrej的答案,现在它可以完美地按照我所希望的方式工作了: 该代码检查是否存在一个单元,如果使用程序,则始终链接该单元;如果存在,则向关于框中添加库名称、版权和链接。