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

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

2022-06-13   來源: Delphi編程 

  當然 在該單元的 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 的結果

[]  []  []  


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