bpl 使用之我见

转载 2006年06月05日 18:14:00

写在前面
  在此不再赘述bpl与dll的比较,只介绍bpl的动态调用。如需转载敬请保留原版作者信息,
  及实现部分的完整性,
开始---------------------------------------->
        实现过程
           <第一部分 接口单元>
                创建一个接口单元
                {$WEAKPACKAGEUNIT}
                unit uInterface;

                interface
                uses
                  Classes, Forms;
                type
                  TBaseClss = class(TComponent)
                    function CreateForm:TForm; virtual; stdcall;abstract;
                    ...
                  end;

                implementation

                { TBaseClss }


                end.


            <第二部分 调用的主程序>
                选项设置
                Project -> Options -> Packages : Runtime Packages
                        将Build with Runtime Packages复选框选中;

                引用uInterface单元

                调用过程
                function LoadPacket(Fbpl, FClass: String): Boolean;
                var
                  FForm  : TForm;
                  FPersistentClass: TPersistentClass;
                  FBaseClss : TBaseClss;
                  H: HMODULE;
                begin
                  try
                    try
                      H := 0;
                      H := LoadPackage(Fbpl);
                      FPersistentClass := FindClass(FClass);
                      if FPersistentClass <> nil then
                      begin
                        FBaseClss :=
                        TBaseClss(TComponentClass(FPersistentClass).Create(Application));
                        FForm := nil;
                        FForm := FBaseClss.CreateForm;
                        FBaseClss.Free;
                        FBaseClss := nil;
                        FPersistentClass := nil;
                        if Assigned(FForm) then
                        begin
                          FForm.ShowModal;
                          FreeAndNil(FForm);
                        end;
                      end;
                    except
                      Application.MessageBox('此功能未安装', '提示', MB_OK +
                        MB_ICONINFORMATION);
                    end;
                  finally
                    if H <> 0 then
                    begin
                      UnloadPackage(H);
                      H := 0;
                    end;
                  end;
                end;

            <第三部分 创建bpl包>
                创建包

                引用uInterface单元

                创建接口类,实现TBaseClss
                  TTestClass = class(TBaseClss)
                    function CreateForm:TForm; override;
                    ...
                  end;

                function TTestClass.CreateForm: TForm;
                var
                  Form2: TForm2;
                begin
                  Form2 := TForm2.Create(Application);
                  if Assigned(Form2) then
                    Result := Form2
                  else
                    Result := nil;
                end;


                注册类
                initialization
                  RegisterClass(TTestClass);
                  UnRegisterClass(TBaseClss);
                反注册类
                finalization
                  UnRegisterClass(TTestClass);
--------------------------结束>

 

Delphi XE中动态表达式的应用 (调用自定义函数)

最近发现除了用动态脚本语言来实现动态表达式的运算(比如fs),还可以在高版本的delphi里面实现 .      如下代码, 先定义一个GetArea函数的实现(获得面积的函数), 然后注册它, 再利...
  • rocklee
  • rocklee
  • 2017年07月13日 16:18
  • 682

BPL文件调用

1、先建一个BPL文件  **************************************************************** initialization re...

Delphi XE新语法/新功能

编码/解码组件:Added System.NetEncoding unit in RTL.  This unit provides a new TNetEncoding class to unify ...
  • rocklee
  • rocklee
  • 2015年09月21日 16:16
  • 2577

Delphi 中,基于接口,封装类为 BPL 包动态加载的程序架构

DELPHI 的普通程序编译出来比较大,一个空程序也要超过1M。其原因是 DELPHI 的程序把所有需要的库都编译到EXE文件里面去了。这样做有个好处:程序发布简单,只要发布一个 EXE 就搞定。 ...

Delphi BPL包的运用

利用Delphi包的优势,构建插入式综合应用程序。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi 中,基于接口,封装类为 BPL 包动态加载的程序架构 之一

DELPHI 的普通程序编译出来比较大,一个空程序也要超过1M。其原因是 DELPHI 的程序把所有需要的库都编译到EXE文件里面去了。这样做有个好处:程序发布简单,只要发布一个 EXE 就搞定。 ...

2003 使用 LINUX 之我见

如果要不用盗版,除了 WINDOWS 必须付钱之外,我可以在 NT 下可以使用 SPONSORED PKZIP,在 9X 下可以直接使用 PKZIP 2.50 FOR DOS。要查看 RAR 文件,我...

IE6共存、调试(查看Dom元素,修改元素样式)之我见 + IE6下Firebug Lite的使用

作为一名前端开发者,还是不得不顾及IE6的兼容问题。稍微总结一下目前可用的几种IE6共存的方法。 1、IE6绿色版 此种方式可用于XP系统,但不适用于win7。 2、win7安装虚拟机,...

DELPHI bpl使用

了解BPL和DLL的关系将有助于我们更好地理解DELPHI在构件制作、运用和动态、静态编译的工作方式。对初学DELPHI但仍对DELPHI开发不 甚清晰的朋友有一定帮助。 BPL vs. DLL ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bpl 使用之我见
举报原因:
原因补充:

(最多只允许输入30个字)