其他语言

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

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


发布日期:2023年05月01日
 
Dll 中导出类 --Delphi 实战[3]

当然 在该单元的 Use 列表中应当将 TFrmTest TFrmTest 以及 TFrmTest 所在的单元包含进来而 TFrmTest 的实现可以象这样 :

TFrmTest = Class(TMyBaseForm)

protected

function GetTitle: PChar; override;

end;

function TFrmTestGetTitle: Pchar;

begin

result := Hello from TFrmTest;

end;

末了 别忘了将 GetClassCount 和 GetClassByIndex 加到 Exports 列表中然后 Build 该 Dll 工程的时候 请将 Project optionpackage 中的 使用运行包 use runtime package 打勾至于具体的原因后面讲

至此 Dll 方面的工作告一段落

第三步 主程序驱动引擎的实现 :

这一步相对来说容易些 无非是动态加载 Dll然后调用 GetClassCount 函数 接着调用 GetClassByIndex 关键的代码 :

Var AClass: TMyBaseClass;

AForm: TMyBaseForm;

I iCount: integer;

blResult: Boolean;

begin

// 略去加载动态库的部分 假定 FPGetClassProc 指向 GetClassCount 函数 FPGetClassByIndexProc 指向 GetClassByIndex则 :

iCount := FPGetClassProc;

for I := to iCount do

begin

AClass := FPGetClassByIndex(I blResult);

if blResult then

begin

AForm := AClassCreate(Application);

AFormCaption := AFormGetTitle;

AFormShow;

end;

end;

// …

end;

注意一点 和 Dll 相似 创建输出文件的时候 也需要选择使用运行时间包这是因为 如果不使用运行时间包 将导致相同的类在内存中有多个副本 因而对它们使用 Is 操作符的将返回 False 的结果

[] [] []

               

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

下一篇:用Delphi编制IP地址转换器