其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

Dll 中导出类 --Delphi 实战[1]


发布日期:2021年07月02日
 
Dll 中导出类 --Delphi 实战[1]

从 Dll 中导出类 想必大家首先想到的是使用 bpl 包这种方式有一个不好 那就是使用者必须清楚这个包中含有那些类 也就是说必须知道类的名字 这在一定意义上是个限制 试想一种情况 使用者定义了一个底层的抽象类 (abstract class)然后在此基础上定义了许多应用类 (concrete class)那么 对于使用者来说 他希望在不知道具体有哪些类的情况下能使用这些类 这么说似乎有些玄 但实际情况确实如此 因为定义抽象类的时候并不能预料到以后会有多少个具体类 那么这样的需求 要靠什么样的技术来实现呢?

其实实现的技术的难度并不大 作者在此将自己实践的经验献给大家 算作抛砖引玉 希望能看到其他更好的方法!

以下先介绍该方法涉及的一些基础知识 然后用一个例子来说明具体的实现

基本概念

元类 (meta class)也叫类引用类型 (classreference type)可以看成是一种类的类型 以该类型声明的变量的值代表一个类比如 : type

TClass = Class of TObject;

这样就声明了一个元类的类型然后可以有这样的变量声明 :

Var

AClass: TClass;

那么 就可以有这样的用法 :

AClass := TObject;

或者 :

AClass := TButton;

或者 :

AClass := TForm;

等等

因为 TClass 是一个 TObject 类型的元类 而 TButtonTForm 等都是自 TObject 派生而来 因而 TButton 和 TForm 这样的值对于 AClass 都是可接受的

然后 我们就可以运用多态的思想 灵活运用 AClass 这个类变量了而这一点也正是下文具体实现的基础知识

具体实现

第一步 建立一个抽象类 :

我们使用这样一个简单的声明 该抽象类只提供了一种抽象方法 但并不影响我们描述问题 :

TMyBaseForm = Class(TForm)

protected

function GetTitle: pchar; virtual; abstract;

end;

MyBaseFormClass = Class of TMyBaseForm;

[] [] []

               

上一篇:用Delphi编写打印程序的窍门

下一篇:Dll 中导出类 --Delphi 实战[2]