当前位置:文档之家› DELPHI封装对象到DLL

DELPHI封装对象到DLL

方法二:运用接口在 DLL 中封装对象...........................................................................................3 原型............................................................................................................................................. 3 封装步骤..................................................................................................................................... 3
使用接口避免了将 TCar 在两处声明的难堪,避免了使用 virtual 和 abstract 造成的视觉 混乱,而且接口可以自动管理对象的生命期,避免程序员忘记销毁对象造成的内存泄漏。
总之,使用接口很好的解决了在 DLL 封装对象的局限。
方法三:用 COM/COM+封装对象
Uses ShareMem; …… function CrtCar:TCar; begin
result := TCar.Create; end;
exports CrtCar;
End. 4、 新建一个单元,添加到 DemoDll 项目中,命名为 CarI。代码如下:
unit CarI; interface type
uses ShareMem …… function CrtCar:TCar; begin result:=TCar.Create; end;
exports CrtCar;
5、 在 Frm 单元做以下修改: 添加
TCar = class(TObject) procedure Drive;virtual;abstract;
方法三:用 COM/COM+封装对象..................................................................................................4
方法一:基本封装
原型
原型说明
TForm1 和 TCar 分别在不同的单元当中; TForm1 中有一个按钮 Button1,点击 Button1 执行 TCar.Drive; TForm1 单元 uses 了 TCar 单元; TForm1 的处理过程如下:
var mycar:TCar;
begin mycar:=TCar.Create; mycar.Drive; mycar.Free;
封装 TCar 到 DLL 中
在 DLL 中封装对象的限制
调用 DLL 的应用程序只能使用 DLL 中对象得动态绑定方法。也就是说方法后面必须有 virtual 关键字;
改为 TCar = class(TInterfacedObject,ICar)
6、 Frm 单元代码: procedure TForm1.Button1Click(Sender: TObject); var mycar:ICar; begin mycar:=CrtCar; mycar.Drive; mycar:=nil; end;
方法二:运用接口在 DLL 中封装对象
原型
还是方法一中的原型。
封装步骤
1、 在 Project Manager 中添加新项目 Add New Project,选择 DLL Wizard,命名新项目 为 DemoDll。
2、 将 TCar 添加到 DemoDll 项目中,并在 DemoExe 中删除 Tcar。 3、 在 Library DemoDll 中添加:
end; …… var
function CrtCar:TCar;external 'DemoDll.dll'; 修改
将 mycar:=TCar.Create 改为 mycar:=CrtCar
我们发现,在 TCar 单元中声明了类 TCaபைடு நூலகம்,在 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 中做以下修改: 添加
在 Delphi 中封装对象到 DLL
方法一:基本封装.............................................................................................................................1 原型............................................................................................................................................. 1 原型说明..................................................................................................................................... 1 封装 TCar 到 DLL 中.................................................................................................................2 在 DLL 中封装对象的限制...............................................................................................2 封装步骤.............................................................................................................................2
相关主题