DELPHI包(bpl)

来源:互联网 发布:淘宝试用不写试用报告 编辑:程序博客网 时间:2024/05/21 15:49
DELPHI包可以用做一种构件分发方法,用来分发将要被安装在环境中的构件。程序员也可以将DELPHI包用做一种代码结构设计方法,进而以一种动态方式组织代码;与程序员使用普通DLL时不同,这种动态方式仍然保留DELPHI OOP的全部能力。请考虑这样一种情形:一个包是一些已编译单元的集合,并且一个程序使用几个单元。这个程序所引用的单元将被编译到可执行文件内,而BPL是根据需要才动态链接的。程序员可以在静态与动态链接之间轻松的切换是使用包的主要原因之一。要想开发一个应用程序以便它的代码被分解成一个或多个包和一个主可执行文件,程序员只需要将一些单元编译在一个包中,然后设置主程序的选项来动态地链接这个包 为了能够轻松地部署应用程序和它所使用的各个包,将这些已编译过的包放置在应用程序文件夹中可能会更方便一些。使用运行时包使可执行文件小得多。一个应用程序的可执行文件的大小加上所需包的大小始终比静态链接程序的大小大很多。链接器只包含程序所使用的代码,而一个包必须将它所包含的所有单元的INTERFACE部分中所声明的所有函数和类都链入。如果运行多个基于相同包的DELPHI应用程序,则可以在运行时节省一些内存空间;那些运行时包的代码在多个DELPHI应用程序当中只被装载到内存中一次。一个包就是一些编译单元的一个集合,这些单元与程序内的单元没有任何不同。惟一的不同之处在于创建过程。这些包单元的代码和使用它们的主程序的各个单元的代码保持一致。可论证的是,这是BPL包胜过DLL的关键优势之一。包呈现两种形式:由DELPHI IDE使用的设计时包,以及由应用程序任选地使用的运行时包。当试图安装一个包时,IDE检查它含有纯设计时标志还是纯运行时标志,并决定是否允许用户安装该包,以及它是否应该被添加到运行时包列表上。由于存在两种非排斥的选择,所以它们也可以被组合起来。纯设计时构件包(在源代码中含有{$DESIGNONLY}指令)能被安装在DELPHI环境中。纯运行时构件包(在源代码中含有{RUNOLNY}指令)由DELPHI应用程序在运行时使用。它们不能被安装在DELPHI环境中,但是当一个已安装的设计时包需要它们时,它们被自动添加到运行时包列表上。运行时包之所以重要,是因为它们能够随同应用程序一起被自由地分发。但是其它DELPHI程序员将无法把它们安装在环境中来创建新的包。设计时与运行时包(在源代码中不含有{$DESIGNONLY} and {RUNOLNY}指令)能被安装和自动添加到运行时包列表上。