国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

DLL文件在Delphi的創建及調用

2019-11-18 18:44:18
字體:
來源:轉載
供稿:網友
   現時系統的開發,多數都在幾人以上的組合,工合作方式開發,這樣也方便系統的快速開發目的。
而DLL的方法最為方便。我現整理了一些這方面資料,希望能幫助一些有需要的同學(記得我剛學時,請人教是一不可想象的事)。//(Copy source book)

一.函數過程的寫法:


library FIRSTDLL;


uses
  SysUtils,
  Classes;


{$R *.RES}
// 1.定義函數具體過程和輸出接口方式
// --------------------------------
// 函數 1
// 功能:事數據3倍放大函數
// --------------------------------
function BBnToSSnn(SourceResult:Integer):Integer;stdCall;
begin
  if SourceResult>0 then
    Result:=SourceResult+3 //結果存放于Result
  else
    Result:=SourceResult;
end;


exports 
  BBnToSSnn; //2.函數輸出口定義
 
end.


==
==


二.在DLL中創建Form
=======================
1.一步,創建DLL工程,及加入設置好的Form


library MGRPERSN;
uses
  SysUtils,
  Classes,
  MGRPERFM in 'MGRPERFM.pas' {FormPERSON};//1.Form的代碼(與一般的Form一樣)


{$R *.RES}
exports
   ShowPerSN;//2.函數輸出口定義
begin
end.


2. 在DLL設定的Form的設置
===========================================
unit MGRPERFM;


interface


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ToolWin, ImgList;


type
  TFormPERSON = class(TForm)
  PRivate
    { Private declarations }
  public
    { Public declarations }
  end;


//些處的變量不再用,給其改個地方,如下(改變之一)
//var
//  FormPERSON: TFormPERSON;

{宣布Form函數出口}//改變之二
function ShowPerSN(AHandle: THandle; ACaption: String):BOOL; StdCall;


implementation


{$R *.DFM}
//函數據過程定義
function ShowPerSN(AHandle: THandle; ACaption: String):BOOL;
var
  FormPERSON: TFormPERSON; //定義窗體類(上面的放到了此處)
begin
  //拷貝應用程式句柄給DLL的應有程式對象
  application.Handle := AHandle;
  FormPERSON := TFormPERSON.Create(Application);//創建控件TForm
  try
    FormPERSON.Caption := ACaption;
    FormPERSON.ShowModal;//顯示此Form
    Result := False; //反回成功值
  finally
    FormPERSON.Free;
  end;
end;


三.DLL中函數及窗體的調用
==========================
1.調用方法一
--------------
implementation //在此的下方寫明調用函數的DLL


{$R *.DFM}
//DLL內函數調用
function BBnToSSnn(SourceResult:Integer):Integer;
     StdCall external 'FIRSTDLL.DLL';


........


2.調用方法二
==============
type  //在此創建一個函數類
  // 1 -------------------------------
  TShowPerSN = function (AHandle: THandle; ACaption: String): BOOL; StdCall;
  EDLLLoadError = class(Exception);//同時分創建一個出錯記錄類
  // 1 -------------------------------
  TMAINCLTR = class(TForm) //這里不變,系統自動生成


......


procedure TMAINCLTR.ToolButton1Click(Sender: TObject);
var  //按鈕的調用事件:調用過程
  LibHandle: THandle;
  ShowPerSN: TShowPerSN;
begin
  Application.Title:='人力資源管理系統DLL文件測試程式';
  { Attempt to load the DLL 嘗試裝入DLL文件}
  LibHandle := LoadLibrary('MGRPERSN.DLL');
  try
    if LibHandle = 0 then
      raise EDLLLoadError.Create('無法成功裝入MGRPERSN.DLL');
    @ShowPerSN := GetProcAddress(LibHandle, 'ShowPerSN');
    if not (@ShowPerSN = nil) then
      ShowPerSN(Application.Handle, '人事資料管理')//呼叫出窗體
    else
      RaiseLastWin32Error;
  finally
    FreeLibrary(LibHandle); // Unload the DLL.
  end;
end;
============== END ==================



上一篇:Delphi代碼的標準風格

下一篇:Delphi圖書目錄

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 交城县| 丘北县| 华蓥市| 汨罗市| 林周县| 汽车| 通许县| 承德市| 内黄县| 肥城市| 临桂县| 长葛市| 繁昌县| 百色市| 龙泉市| 乡宁县| 类乌齐县| 博罗县| 溆浦县| 清河县| 黄平县| 宜兰县| 桃源县| 丰都县| 奎屯市| 秦安县| 凤阳县| 泰和县| 安溪县| 普洱| 贺州市| 泉州市| 潜江市| 定远县| 呼图壁县| 垦利县| 嵊州市| 五大连池市| 吉首市| 顺昌县| 罗源县|