• bpl 包的编写和引用


    转载:http://www.cnblogs.com/gxch/archive/2011/04/23/bpl.html

    为什么要使用包?

    答案很简单:因为包的功能强大。设计期包(design-time package)简化了自定义组件的发布和安装;而运行期包(run-time package)则更是给传统的程序设计注入了新鲜的力量。一旦把可重用的代码编译为运行期库中,你就可以在多个应用程序中共享它们。所有应用程序都可以通过包访问标准组件,Delphi自己就是这么干的。因为应用程序不必在可执行文件中单独复制一份组件库,这样就大大节省了系统资源和磁盘空间。此外,包还可以减少花费在编译上的时间,因为你只需编译应用程序特有的代码。

    如果可以动态的使用包,那么我们还可以获得更多的好处。包提供了一种新颖的模块化方法来开发应用程序。有些时候你也许想把某些模块作为应用程序的可选部件,例如一个记帐系统附带一个可选的HR模块。某些情况下,你只需安装基本的应用程序,而在另外一些情况下你就可能需要额外安装HR模块。这种模块化的方法可以通过包技术很容易的实现。在过去,这只能通过动态装载DLL实现,但是使用Delphi的包技术,你就可以把应用程序的各个模块类型分别打“包”成捆。特别是从包中创建的类对象则属于应用程序所有,因此可以与应用程序中的对象交互。

    运行期包与应用程序

    许多开发者只把Delphi包看作放组件的地方,事实上包可以(而且也应该)应用于模块化应用程序设计。

    为了演示如何用包来模块化你的应用程序,我们创建一个例子:

    1、 新建一个具有两个窗体的Delphi程序:Form1和Form2;

    2、 将Form2从自动创建窗体列表中移除(Project |Options | Forms);

    3、 在Form1上放一个按钮,并且在按钮的OnClick事件处理器中输入如下代码:

    with TForm2.Create(Application) do

    begin

    ShowModal;

    Free;

    End;

    4、记住添加Unit2到Unit1的uses子句中;

    5、 保存并运行工程。

    我们创建了一个简单的应用程序,它显示一个带按钮的窗体,点击这个按钮则会创建并显示出另一个窗体。

    但是如果想将上述例子中的Form2包含在一个可重用模块中,并使它依然可以正常工作,我们该怎么办呢?

    答案是:包!

    要为Form2创建包需要以下工作:

    1、 打开工程管理器(View | Project Manager);

    2 、右击Project Group,选择“Add NewProject...”;

    3、在“New”项目列表中选择“Package”;


    4、 现在你应该可以见到包编辑器;

    5、选择“Contains”项目,然后点击“Add”按钮;

    6、 然后点击“Browse...”按钮,并选择“Unit2.pas”;

    7、现在包中应该包含了“Unit2.pas”单元;

    8、 最后保存并编译包。

    现在我们完成了这个包。在你的ProjectBPL目录中应该有一个名叫“package1.bpl”的文件。(BPL是Borland Package Library的缩写,DCP是Delphi CompiledPackage 的缩写。)


    这个包已经完成了。现在我们需要打开包选项开关

    并重新编译原先的应用程序。

    1、 在工程管理器中双击“Project1.exe”以选中该工程;

    2、 右击并选择“Options...”(你也可以从菜单中选择Project | Options...);

    3、 选中“Packages”选项页;

    4、 选中“Build with runtime packages”检查框;

    5、 编辑“Runtime packages”编辑框:“Vcl50;Package1”,并点击“OK”按钮;

    6、 注意:不要从应用程序中移除Unit2;

    7、 保存并运行应用程序。

    应用程序会象从前一样运行,不过区别可以从文件的大小上看出来。

    Project1.exe现在只有14K大小,而从前则是293K。如果你用资源浏览器查看EXE和BPL文件的内容,你就会发现Form2的DFM和代码现在都保存在包中。

    ===============

    可以更改包的输出路径,和exe对包的引用路径。 例子:G:D7delphi7-2015-2BPL包

  • 相关阅读:
    微信开发css框架资料,
    免费师范生微信服务平台
    SAE+ThinkPHP+微信开发系列教程(一)
    red5学习笔记系列之二red5常见问题解答FAQ
    red5学习笔记系列之一帮助手册的目录
    phpexcel移植到sae上的一个致命bug的解决的办法
    关于学校电脑教室电脑维护二
    瞬间让SignalR 实现在线聊天室~
    delegate 与 event 不得不说的关系~
    动态对象DynamicObject实现让字典书写更优美
  • 原文地址:https://www.cnblogs.com/rogge7/p/4556687.html
Copyright © 2020-2023  润新知