DLL文件在Delphi的创建及调用
2008-04-10 02:58:03来源:互联网 阅读 ()
主题:DLL文件在Delphi的创建及调用
现时系统的开发,多数都在几人以上的组合,工合作方式开发,这样也方便系统的快速开发目的。
而DLL的方法最为方便。我现整理了一些这方面资料,希望能帮助一些有需要的同学(记得我刚学时,请人教是一不可想象的事)。
一.函数过程的写法:
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 ==================
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Delphi图书目录
下一篇:李维:论一个程序员应具有的品行
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash