分享
 
 
 

DLL文件在Delphi的创建及调用

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

主题:DLL文件在Delphi的创建及调用

现时系统的开发,多数都在几人以上的组合,工合作方式开发,这样也方便系统的快速开发目的。

而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 ==================

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有