a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > Delphi > 正文

DLL文件在Delphi的創(chuàng)建及調(diào)用

2019-11-18 18:44:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
   現(xiàn)時(shí)系統(tǒng)的開(kāi)發(fā),多數(shù)都在幾人以上的組合,工合作方式開(kāi)發(fā),這樣也方便系統(tǒng)的快速開(kāi)發(fā)目的。
而DLL的方法最為方便。我現(xiàn)整理了一些這方面資料,希望能幫助一些有需要的同學(xué)(記得我剛學(xué)時(shí),請(qǐng)人教是一不可想象的事)。//(Copy source book)

一.函數(shù)過(guò)程的寫法:


library FIRSTDLL;


uses
  SysUtils,
  Classes;


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


exports 
  BBnToSSnn; //2.函數(shù)輸出口定義
 
end.


==
==


二.在DLL中創(chuàng)建Form
=======================
1.一步,創(chuàng)建DLL工程,及加入設(shè)置好的Form


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


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


2. 在DLL設(shè)定的Form的設(shè)置
===========================================
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;


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

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


implementation


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


三.DLL中函數(shù)及窗體的調(diào)用
==========================
1.調(diào)用方法一
--------------
implementation //在此的下方寫明調(diào)用函數(shù)的DLL


{$R *.DFM}
//DLL內(nèi)函數(shù)調(diào)用
function BBnToSSnn(SourceResult:Integer):Integer;
     StdCall external 'FIRSTDLL.DLL';


........


2.調(diào)用方法二
==============
type  //在此創(chuàng)建一個(gè)函數(shù)類
  // 1 -------------------------------
  TShowPerSN = function (AHandle: THandle; ACaption: String): BOOL; StdCall;
  EDLLLoadError = class(Exception);//同時(shí)分創(chuàng)建一個(gè)出錯(cuò)記錄類
  // 1 -------------------------------
  TMAINCLTR = class(TForm) //這里不變,系統(tǒng)自動(dòng)生成


......


procedure TMAINCLTR.ToolButton1Click(Sender: TObject);
var  //按鈕的調(diào)用事件:調(diào)用過(guò)程
  LibHandle: THandle;
  ShowPerSN: TShowPerSN;
begin
  Application.Title:='人力資源管理系統(tǒng)DLL文件測(cè)試程式';
  { Attempt to load the DLL 嘗試裝入DLL文件}
  LibHandle := LoadLibrary('MGRPERSN.DLL');
  try
    if LibHandle = 0 then
      raise EDLLLoadError.Create('無(wú)法成功裝入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代碼的標(biāo)準(zhǔn)風(fēng)格

下一篇:Delphi圖書目錄

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 欧美韩日精品 | 中文字幕国产 | 亚洲国产精品久久 | 丁香婷婷在线观看 | 亚洲精品视频在线播放 | 国产女人高潮大叫a毛片 | 亚洲午夜在线 | 成人av影视在线观看 | 日韩电影一区 | 91精品国产高清自在线观看 | 国产成人在线播放 | 欧美性一级 | 天堂中文av在线 | 欧洲美女7788成人免费视频 | 97香蕉久久国产超碰青草软件 | 日韩大片免费观看视频播放 | 99亚洲视频 | 久久aⅴ国产欧美74aaa | 一级一级一级一级毛片 | 欧美日韩不卡合集视频 | 国内精品成人 | 青青草久草在线 | 午夜黄色影院 | 国产在线国偷精品产拍 | 日韩欧美大片在线观看 | 久久久精彩视频 | 日韩有码一区二区三区 | 成年人网站在线免费观看 | 中文字幕在线第一页 | 欧美在线观看一区 | 久久网日本 | 日韩三级在线 | 久在线 | 日日摸夜夜添夜夜添特色大片 | 亚洲电影免费 | 亚洲精品视频国产 | 国产在线国偷精品产拍免费yy | 亚洲国产精品久久久久秋霞不卡 | 国产精品一区二区在线观看网站 | 黄色成人av| 爱爱无遮挡 |