DELPHI封装对象到DLL

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法二:运用接口在 DLL 中封装对象
原型
还是方法一中的原型。
封装步骤
1、 在 Project Manager 中添加新项目 Add New Project,选择 DLL Wizard,命名新项目 为 DemoDll。
2、 将 TCar 添加到 DemoDll 项目中,并在 DemoExe 中删除 Tcar。 3、 在 Library DemoDll 中添加:
方法三:用 COM/COM+封装对象..................................................................................................4
方法一:基本封装
原型
原型说明
TForm1 和 TCar 分别在不同的单元当中; TForm1 中有一个按钮 Button1,点击 Button1 执行 TCar.Drive; TForm1 单元 uses 了 TCar 单元; TForm1 的处理过程如下:
uses ShareMem …… function CrtCar:TCar; begin result:=TCar.Create; end;
exports CrtCar;
5、 在 Frm 单元做以下修改: 添加
TCar = class(TObject) procedure Drive;virtual;abstract;
var mycar:TCar;
begin mycar:=TCar.Leabharlann Baidureate; mycar.Drive; mycar.Free;
封装 TCar 到 DLL 中
在 DLL 中封装对象的限制
调用 DLL 的应用程序只能使用 DLL 中对象得动态绑定方法。也就是说方法后面必须有 virtual 关键字;
使用接口避免了将 TCar 在两处声明的难堪,避免了使用 virtual 和 abstract 造成的视觉 混乱,而且接口可以自动管理对象的生命期,避免程序员忘记销毁对象造成的内存泄漏。
总之,使用接口很好的解决了在 DLL 封装对象的局限。
方法三:用 COM/COM+封装对象
end; …… var
function CrtCar:TCar;external 'DemoDll.dll'; 修改
将 mycar:=TCar.Create 改为 mycar:=CrtCar
我们发现,在 TCar 单元中声明了类 TCar,在 Frm 单元也声明了 TCar,重复声明不是 OO 的正确思想。而且,两处的声明还不太一样,难以理解。
ICar = Interface(IInterface) ['{… …}'] //GUID,按 Ctrl+Shift+g 可以生成 procedure Drive;
end; implementation end. 5、 将 CarT 单元中的 TCar 做一些改变:
将 Tcar = class(TObject)
封装对象的实例只能在 DLL 中创建; 在 DLL 和调用 DLL 的应用程序中都需要对封装对象以及被调用的方法进行声明;
封装步骤
1、 在 Project Manager 中添加新项目 Add New Project,选择 DLL Wizard,命名新项目 为 DemoDll。
2、 将 TCar 单元加入到 DemoDll 项目中,并从原项目 DemoExe 中删除 TCar 单元。 3、 在 TCar 单元做以下修改:在 Drive 方法后面加上 virtual 关键字。 4、 在 Library DemoDll 中做以下修改: 添加
改为 TCar = class(TInterfacedObject,ICar)
6、 Frm 单元代码: procedure TForm1.Button1Click(Sender: TObject); var mycar:ICar; begin mycar:=CrtCar; mycar.Drive; mycar:=nil; end;
在 Delphi 中封装对象到 DLL
方法一:基本封装.............................................................................................................................1 原型............................................................................................................................................. 1 原型说明..................................................................................................................................... 1 封装 TCar 到 DLL 中.................................................................................................................2 在 DLL 中封装对象的限制...............................................................................................2 封装步骤.............................................................................................................................2
方法二:运用接口在 DLL 中封装对象...........................................................................................3 原型............................................................................................................................................. 3 封装步骤..................................................................................................................................... 3
Uses ShareMem; …… function CrtCar:TCar; begin
result := TCar.Create; end;
exports CrtCar;
End. 4、 新建一个单元,添加到 DemoDll 项目中,命名为 CarI。代码如下:
unit CarI; interface type
相关文档
最新文档