现时系统的开发,多数都在几人以上的组合,工合作方式开发,这样也方便系统的快速开发目的。
而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创建与调用是Windows应用程序开发中的一个重要技术,它允许我们把一些常用功能封装到一个DLL(Dynamic Link Library)文件中,然后在多个应用程序之间共享这些代码,以提高程序的复用性和效率。本篇文章将...
在深入探讨如何让Delphi调用C#编写的DLL之前,我们需要了解几个基本概念,以及如何配置相应的开发环境。 1. **环境配置**: - 确保安装了Delphi开发环境(例如Delphi 7或更高版本)。 - 安装.NET Framework及相关...
本篇将详细介绍如何在Delphi XE10.3中创建静态DLL以及如何从其他Delphi应用程序中调用这些DLL。 首先,我们要理解什么是静态DLL。与常规的动态DLL不同,静态DLL并不是在运行时由操作系统加载,而是将其代码和数据...
在Delphi中,可以通过`external`语句指定要调用的DLL文件。例如,如果DLL位于当前目录下,则可以直接写`external 'Delphi.dll'`。如果DLL位于其他位置,如`C:\`,则需要完整地指定路径,例如`external 'C:\Delphi....
在Delphi编程中,动态调用DLL(Dynamic Link Library)是一种常见的技术,它允许你在运行时加载和使用库函数,而无需在编译时硬编码这些依赖。这为程序提供了更大的灵活性,因为你可以根据需要加载特定的DLL,或者在...
以下将详细介绍Delphi调用C++ DLL的技术细节、步骤以及需要注意的关键点。 ### 一、基础知识概述 #### 1.1 动态链接库(DLL)简介 动态链接库(Dynamic Link Library,简称DLL)是Windows系统中一种重要的组件形式...
本教程将以Delphi 7.0为开发环境,详细讲解如何创建一个DLL,并在Delphi应用程序中调用其功能来计算两个数的最大值和最小值。 首先,我们需要理解DLL的基本概念。DLL是一个包含可由多个程序同时使用的函数和其他...
本文将深入探讨如何在C# 2013中调用Delphi 7编写的DLL库文件,包括通过函数和存储过程两种方式。 首先,理解基本原理:C#调用DLL主要依赖于P/Invoke(Platform Invoke)特性,这是.NET Framework提供的一种机制,...
综上所述,Delphi多线程调用DLL涉及到了线程创建、DLL加载与卸载、函数调用、线程安全、同步原语使用等多个方面,需要开发者对多线程编程有深入的理解和实践经验。正确地处理这些问题将能充分利用多核处理器的优势,...
总结来说,Delphi DLL 文件的调用涉及到创建 DLL 工程,导出函数,以及在调用方加载、获取函数地址、调用函数和释放 DLL 等步骤。熟练掌握这些技巧,能够让你在 Delphi 开发中更高效地复用代码和实现跨程序的交互。
此外,压缩包中的"调用的dll"和"调用"文件可能是示例的源代码或已经编译好的DLL,用于演示如何在Delphi 10.2中创建和使用DLL。通过这些示例,你可以更直观地了解整个过程,并且可以在自己的项目中进行实践。 总之,...
总结起来,Delphi调用DLL主要涉及以下步骤: 1. 在DLL项目中定义函数并导出。 2. 在主程序中使用`LoadLibrary`加载DLL。 3. 使用`GetProcAddress`获取DLL函数的地址。 4. 调用DLL函数执行所需操作。 5. 使用`...
本示例主要探讨如何在PB11.5环境中创建和调用DLL(动态链接库)文件,以便实现代码复用和模块化设计。 创建DLL的步骤通常包括以下几个关键环节: 1. **设计接口**:首先,你需要定义DLL的接口,这包括确定对外公开...
在 Delphi 开发环境中,调用 DLL 是一个常见的需求,尤其是在实现跨语言交互或者利用第三方库时。下面将详细阐述Delphi7中调用DLL的几种常见方法。 1. **LoadLibrary 和 FreeLibrary** - `LoadLibrary` 是 Windows...
在IT行业中,跨语言通信是常见的需求,本案例聚焦于如何使用Delphi 7静态或动态地调用由VS2019中的C#编译的非托管DLL,并将其整合到DLL项目中。非托管DLL是指不依赖.NET Framework运行时环境的DLL,这使得它可以在不...
然而,当需要在Delphi项目中调用DLL中的函数或过程时,我们需要创建对应的PAS(Pascal源代码)文件来声明这些函数和类型。DLL2PAS工具就是为了简化这一过程而存在的。 DLL2PAS是一款专为Delphi开发者设计的实用工具...
在Delphi中,我们通过声明导出函数来创建DLL,然后在其他项目中导入这些函数以进行调用。 在Delphi XE中创建DLL: 1. 创建一个新的VCL DLL项目。 2. 在DLL项目中,定义一个导出函数,例如: ```pascal library ...
通过以上步骤,你就掌握了在Delphi中创建和调用DLL的基础知识。进一步深入,你可以学习如何处理参数、返回值,以及如何使用类和接口在DLL中。Delphi的DLL编程提供了丰富的可能性,无论是为了实现跨进程通信,还是...
Delphi以其强大的面向对象特性及易用性,在创建高效、快速的Windows应用程序时受到青睐,而它的DLL库能为其他语言提供接口。本教程将详细介绍如何在Qt或VC项目中调用由Delphi编写的DLL库,并生成相应的lib文件,以...