熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Dll 中導出類 --Delphi 實戰[1]

2022-06-13   來源: Delphi編程 

  從 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;

[]  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24861.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.