六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

DLL文件在Delphi的創建及調用

[摘要]現時系統的開發,多數都在幾人以上的組合,工合作方式開發,這樣也方便系統的快速開發目的。而DLL的方法最為方便。我現整理了我的一些這方面資料,希望能幫助一些有需要的同行。一.函數過程的寫法:libra...
    現時系統的開發,多數都在幾人以上的組合,工合作方式開發,這樣也方便系統的快速開發目的。
而DLL的方法最為方便。我現整理了我的一些這方面資料,希望能幫助一些有需要的同行。


一.函數過程的寫法:

library FIRSTDLL;

uses
  SysUtils,
  Classes;

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

exports
  PenniesToSoins; //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;

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

implementation

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

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

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

........

2.調用方法二
==============
type  //在此創建一個函數類
  // 1 -------------------------------
  { First, define a procedural data type, this should reflect the
    procedure that is exported from the DLL. }
  { Create a new exception class to reflect a failed DLL load }
  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('Unable to Load DLL(無法成功裝入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 ==================


主站蜘蛛池模板: 亚洲欧美日韩一级特黄在线 | 在线播放日本爽快片 | 日本综合色 | 亚洲日韩中文字幕一区 | 亚洲a在线观看 | 亚洲 欧美 自拍 卡通 综合 | 午夜免费啪在线观看视频网站 | 日本特黄特色aa大片免费 | 日韩av一中美av一中文字慕 | 天堂资源中文在线 | 四虎影在线永久免费观看 | 亚洲综合精品一二三区在线 | 深夜毛片 | 特黄特色的大片观看免费视频 | 亚洲视频在线免费观看 | 欧美伊人久久久久久久久影院 | 欧美系列在线观看 | 香蕉香蕉国产片一级一级毛片 | 亚洲欧美日韩国产精品影院 | 天天干天天玩天天操 | 一区精品麻豆入口 | 视频一区二区精品的福利 | 视频在线观看免费网址 | 五月激情六月丁香 | 色香蕉色香蕉在线视频 | 亚洲 欧洲 日产 韩国在线 | 色人在线| 四虎一区二区三区 | 深夜福利网站在线 | 天天躁夜夜躁狠狠躁躁 | 青春草在线观看播放免费视频 | 亚洲va久久久噜噜噜久久 | 亚洲高清免费在线观看 | 日本一区二区三区在线观看视频 | 亚洲天堂2014 | 日本免费高清视频二区 | 日韩小视频在线 | 欧美网址在线观看 | 午夜天堂影院 | 日韩毛片在线观看 | 亚洲aaa|