您现在的位置是:首页 >

在实战中积累 Dll 中导出类 --Delphi 实战[2]

火烧 2022-06-03 23:28:03 1075
Dll 中导出类 --Del hi 实战[2]   暂不探讨这么一个抽象类提供了多少可供实用的方法和接口 因为我们要讨论的是一种技术上的可行性 假设作者定义此接口的初衷只是希望获得任意多变化的 Tit

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

  暂不探讨这么一个抽象类提供了多少可供实用的方法和接口 因为我们要讨论的是一种技术上的可行性 假设作者定义此接口的初衷只是希望获得任意多变化的 Title 而具体 GetTitle 的返回值是什么需要靠子类来实现 并且 作者还希望子类的代码放在 Dll 中实现 与主程序分离 这样的方式很有些插件的味道 或许还能实现 Plug&Play 的某些特性 是不是挺吸引人啊?那么 下一不应该怎么做呢?

  首先主程序和 Dll 程序应当将上述声明的单元包含进来 然后 主程序负责实现一个驱动 动态加载 Dll 动态加载类 ; 而 Dll 负责实现子类

  先说 Dll 吧 Dll 应当做什么工作?

  第二步 Dll 中导出子类 :

  我们设计了以下两个导出函数 :

   .  function GetClassCount: integer; stdcall;

  告诉调用者 本 Dll 中共有几个子类 ;

   . function GetClassTypeByIndex(const iIndex: integer;

  var ClassType: MyBaseFormClass): WordBool; stdcall;

  以索引方式获得具体的子类 注意 此处的 ClassType 的类型是 MyBaseFormClass 这表明 它的值将是一个确定的自 TMyBaseForm 继承而来的类

  以下是它们可能的一种实现 :

在实战中积累 Dll 中导出类 --Delphi 实战[2]

function GetClassCount: integer;

begin

result := ; // 表明本 Dll 中导出了 个类

end;

function GetClassTypeByIndex(const iIndex: integer;

var ClassType: MyBaseFormClass): WordBool;

begin

result := True;

case iIndex of

: ClassType := TFrmTest ;

: ClassType := TFrmTest ;

: ClassType := TFrmTest ;

else

result := False;

end;

end;

lishixinzhi/Article/program/Delphi/201311/24860  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码