一种Delphi的DLL封装和调用方法技术

技术编号:8682470 阅读:135 留言:0更新日期:2013-05-09 02:32
一种Delphi的DLL封装和调用方法:DLL是一种应用最为广泛的动态链接技术,但是由于在DLL中封装和调用对象受到对象动态绑定机制的限制,使得DLL在封装对象方面有一定的技术难度,导致有些Delphi程序员误以为DLL只支持封装函数不支持封装对象。本方法着重介绍了DLL中封装和调用对象的一种特有原理和思想。

【技术实现步骤摘要】

本专利技术涉及,特别涉及的是DELPHI中怎样封装和调用的思想方法。
技术介绍
在Delphi中如果程序的各个模块分别保存在不同的单元文件中并通过uses指令来互相调用这就是一个典型的静态链接于是各个静态的子例程编译之后连接器从Delphi编译过的单元或静态库中取出子例程编译代码并添加到执行文件中。静态链接无法实现物理上的切割和封装而且一旦其中某个单元或模块改动其他所有单元或模块都得随之重新编译和连接。
技术实现思路
基于上述问题,特此专利技术;首先是物理封装与动态链接,用于实现物理切割和封装的bpl包DLL动态链接库或COM+组件都是一种动态链接的形式在动态链接情况中连接器只使用子例程external声明中的信息在执行文件中产生一些数据表格当Windows向内存中装载执行文件时它首先装载所有必需的DLL然后程序才会启动在装载过程中Windows用函数在内存中的地址填充程序的内部表格每当程序调用一个外部函数时它就会使用该内部数据表格直接对DLL代码它当前装载在程序的地址空间中进行调用注意该模式不会涉及两个不同的应用程序DLL已经变成了应用程序的一部分并装载在同一地址空间所有参数的传递都发生在堆栈上与其它任何函数调用一样这里我们不打算讨论DLL的编译因为我们首先想重点介绍Delphi中的DLL封装和调用对象技术。第二是用DLL封装对象,DLL封装对象的实例是在DLL中创建的CarObj和BicycleObj函数创建并输出了 Car对象和Bicycle对象的引用这样DemoSvr动态链接库就可以通过CarObj和BicycleObj函数输出Car对象和Bicycle对象了。第三是利用Delphi接口实现DLL中对象的动态绑定。调用DLL的应用程序只能使用DLL中对象的动态绑定的方法理解这一点是实现DLL封装和使用对象的关键那么Delphi接口技术为我们提供了 一个最佳选择。使用接口还带来了更多的好处首先无需使用virtual和abstract限定符修改对象方法声明避免了程序阅读上的错觉其次利用接口实例计数器自动管理对象的生命期避免了程序员遗忘销毁对象造成的内存泄漏。第四是使用抽象类实现DLL中对象的动态绑定。既然DLL中封装和调用对象受到了对象动态绑定机制的限制那么除了利用Delphi接口技术外我们还可以考虑使用抽象类来实现DLL中对象的动态绑定机制它封装了外观类TfrmUsers我把业务部分包括数据模块设计成提供服务的服务器这是一个动态链接库文件UserSvr.dll它封装了业务类TuserMaint和数据库访问类TuserDM这种设计体现了界面和业务分离的思想。由于调用DLL的应用程序只能使用DLL中对象的动态绑定的方法我们不妨专门设计一个抽象类TIUserMaint作为提供对象方法的接口在抽象类TIUsertfaint中有供应用程序使用的对象方法不过它们都是虚抽象方法目的是支持动态绑定而又无需提供实现一般抽象类只定义接口它由虚抽象方法组成而没有实际的数据为了实现抽象类TIUserMaint的抽象方法原来的TUserMaint类需要继承TIUserMaint类并覆盖其所有的虚抽象方法新的TUserMaint类声明如下TUserMaint = class (TIUserMaint)privateUserDM: TUserDM ;publicfunction GetDepList:TStrings ;override ;function GetUserList (strName: String):OLEVariant ;override ;procedure UpdateUserData(UserData:OleVariant ;out ErrCount:1nteger);override ;constructor create ;override ;destructor Destroy ;override ;end ;但实际上TUserMaint类原有的实现部分并不需要改动所以我们的工作量不大。本文档来自技高网...

【技术保护点】
一种Delphi的DLL封装和调用方法:该方法主要是DELPHI的DELL的封装技术及动态的调用方法。

【技术特征摘要】
1.一种Delphi的DLL封装和调用方法:该方法主要是DELPHI的DELL的封装技术及动态的调用方法。2.根据权利要求1的Delphi...

【专利技术属性】
技术研发人员:杨际荣
申请(专利权)人:镇江华扬信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1