`

DLL文件在Delphi的创建及调用

阅读更多
现时系统的开发,多数都在几人以上的组合,工合作方式开发,这样也方便系统的快速开发目的。
而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窗体调用)

    Delphi创建Dll和调用Dll示例(包含Dll窗体调用) 网上介绍比较杂乱,特地整理了一份Demo代大家学习参考。 1.socketA_dll 为dll工程目录。 2.LoadDllDemo 为【静态调用】dll工程目录。 3.LoadDllDemo_动态调用 为...

    DelphiDll创建与调用

    DelphiDLL创建与调用是Windows应用程序开发中的一个重要技术,它允许我们把一些常用功能封装到一个DLL(Dynamic Link Library)文件中,然后在多个应用程序之间共享这些代码,以提高程序的复用性和效率。本篇文章将...

    delphi调用C# DLL

    在深入探讨如何让Delphi调用C#编写的DLL之前,我们需要了解几个基本概念,以及如何配置相应的开发环境。 1. **环境配置**: - 确保安装了Delphi开发环境(例如Delphi 7或更高版本)。 - 安装.NET Framework及相关...

    DelphiXE10.3编写的静态dll及如何调用dll的示例

    本篇将详细介绍如何在Delphi XE10.3中创建静态DLL以及如何从其他Delphi应用程序中调用这些DLL。 首先,我们要理解什么是静态DLL。与常规的动态DLL不同,静态DLL并不是在运行时由操作系统加载,而是将其代码和数据...

    手把手教delphi写你的dll文件

    在Delphi中,可以通过`external`语句指定要调用的DLL文件。例如,如果DLL位于当前目录下,则可以直接写`external 'Delphi.dll'`。如果DLL位于其他位置,如`C:\`,则需要完整地指定路径,例如`external 'C:\Delphi....

    delphi动态调用Dll

    在Delphi编程中,动态调用DLL(Dynamic Link Library)是一种常见的技术,它允许你在运行时加载和使用库函数,而无需在编译时硬编码这些依赖。这为程序提供了更大的灵活性,因为你可以根据需要加载特定的DLL,或者在...

    Delphi调用c++ DLL技术文档

    以下将详细介绍Delphi调用C++ DLL的技术细节、步骤以及需要注意的关键点。 ### 一、基础知识概述 #### 1.1 动态链接库(DLL)简介 动态链接库(Dynamic Link Library,简称DLL)是Windows系统中一种重要的组件形式...

    delphi创建并调用dll教学实例

    本教程将以Delphi 7.0为开发环境,详细讲解如何创建一个DLL,并在Delphi应用程序中调用其功能来计算两个数的最大值和最小值。 首先,我们需要理解DLL的基本概念。DLL是一个包含可由多个程序同时使用的函数和其他...

    C#调用Delphi dll库文件

    本文将深入探讨如何在C# 2013中调用Delphi 7编写的DLL库文件,包括通过函数和存储过程两种方式。 首先,理解基本原理:C#调用DLL主要依赖于P/Invoke(Platform Invoke)特性,这是.NET Framework提供的一种机制,...

    delphi多线程调用dll

    综上所述,Delphi多线程调用DLL涉及到了线程创建、DLL加载与卸载、函数调用、线程安全、同步原语使用等多个方面,需要开发者对多线程编程有深入的理解和实践经验。正确地处理这些问题将能充分利用多核处理器的优势,...

    delphi dll文件调用.rar_delphi_delphi dll文件调用

    总结来说,Delphi DLL 文件的调用涉及到创建 DLL 工程,导出函数,以及在调用方加载、获取函数地址、调用函数和释放 DLL 等步骤。熟练掌握这些技巧,能够让你在 Delphi 开发中更高效地复用代码和实现跨程序的交互。

    Delphi 10.2版本编译dll和调用dll.rar

    此外,压缩包中的"调用的dll"和"调用"文件可能是示例的源代码或已经编译好的DLL,用于演示如何在Delphi 10.2中创建和使用DLL。通过这些示例,你可以更直观地了解整个过程,并且可以在自己的项目中进行实践。 总之,...

    delphi 调用DLL 及释放例子

    总结起来,Delphi调用DLL主要涉及以下步骤: 1. 在DLL项目中定义函数并导出。 2. 在主程序中使用`LoadLibrary`加载DLL。 3. 使用`GetProcAddress`获取DLL函数的地址。 4. 调用DLL函数执行所需操作。 5. 使用`...

    PB11.5创建DLL和调用示例_pb11添加新dll_PB11.5创建DLL和调用示例_

    本示例主要探讨如何在PB11.5环境中创建和调用DLL(动态链接库)文件,以便实现代码复用和模块化设计。 创建DLL的步骤通常包括以下几个关键环节: 1. **设计接口**:首先,你需要定义DLL的接口,这包括确定对外公开...

    Delphi 几种常见的Dll调用方法l

    在 Delphi 开发环境中,调用 DLL 是一个常见的需求,尤其是在实现跨语言交互或者利用第三方库时。下面将详细阐述Delphi7中调用DLL的几种常见方法。 1. **LoadLibrary 和 FreeLibrary** - `LoadLibrary` 是 Windows...

    Delphi7静态动态调用VS2019 C#开发的非托管DLL且整合DLL

    在IT行业中,跨语言通信是常见的需求,本案例聚焦于如何使用Delphi 7静态或动态地调用由VS2019中的C#编译的非托管DLL,并将其整合到DLL项目中。非托管DLL是指不依赖.NET Framework运行时环境的DLL,这使得它可以在不...

    DLL2PAS Delphi据DLL自动生成PAS文件..rar

    然而,当需要在Delphi项目中调用DLL中的函数或过程时,我们需要创建对应的PAS(Pascal源代码)文件来声明这些函数和类型。DLL2PAS工具就是为了简化这一过程而存在的。 DLL2PAS是一款专为Delphi开发者设计的实用工具...

    delphi7调用高版本xe的dll字符串传参示例

    在Delphi中,我们通过声明导出函数来创建DLL,然后在其他项目中导入这些函数以进行调用。 在Delphi XE中创建DLL: 1. 创建一个新的VCL DLL项目。 2. 在DLL项目中,定义一个导出函数,例如: ```pascal library ...

    手把手教你用Delphi写DLL调用DLL

    通过以上步骤,你就掌握了在Delphi中创建和调用DLL的基础知识。进一步深入,你可以学习如何处理参数、返回值,以及如何使用类和接口在DLL中。Delphi的DLL编程提供了丰富的可能性,无论是为了实现跨进程通信,还是...

    Qt.VC调用delphi编写的dll lib,详细方法

    Delphi以其强大的面向对象特性及易用性,在创建高效、快速的Windows应用程序时受到青睐,而它的DLL库能为其他语言提供接口。本教程将详细介绍如何在Qt或VC项目中调用由Delphi编写的DLL库,并生成相应的lib文件,以...

Global site tag (gtag.js) - Google Analytics