现时系统的开发,多数都在几人以上的组合,工合作方式开发,这样也方便系统的快速开发目的。
而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 ==================
分享到:
相关推荐
Delphi创建Dll和调用Dll示例(包含Dll窗体调用) 网上介绍比较杂乱,特地整理了一份Demo代大家学习参考。 1.socketA_dll 为dll工程目录。 2.LoadDllDemo 为【静态调用】dll工程目录。 3.LoadDllDemo_动态调用 为...
DelphiDll创建与调用源码 使用delphi生成动态连接库文件 并使用动态连接库
正如大家看到的,我们在external语句中指定了所要调用的DLL文件的名称。没有写路径是因为该DLL文件和调用它的主程序在同一目录下。如果该DLL文件在C:\,则我们可将上面的引用语句写为external ’C:\Delphi.dll’。...
delphi调用C# DLL
delphi7 dll文件调用 演示DELPHI 编写DLL文件并调用
delphi多线程调用dll delphi多线程调用dll 有点复杂
运用DELPHI7.0创建并调用DLL计算两个数中的最大数和最小数。
delphi dll静态调用 动态调用 实例delphi dll静态调用 动态调用 实例
DelphiXE10.3编写的静态dll及如何调用dll的示例,简单好用,包含dll工程文件和exe工程文件
Delphi DLLExportInterface 动态调用Dll Delphi DLLExportInterface 动态调用Dll
delphi 动态调用dll 最实用的调用dll的方法。
Delphi7 调用DLL几种常见的方法源码。
本文档说明了Delphi调用c++ dll的一些技术细节,讲述了如何调用c++的动态链接库接口技术
手把手教你用Delphi写DLL调用DLL、delphi编程DLL技巧汇集。
Delphi中具体调用dll的例子,最基本的dll文件的调用
使用DELPHI7演示如何创建DLL如何调用DLL的例子
delphi调用labview 生成的dll,delphi调用labview 生成的dll
delphi 生成和调用com,dll,服务程序小例子
Delphi 调用DLL文件中的FORM 有form的dll使用方法
delphi dll调用实例 delphi7.0