网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.ADO方式下判断数据表是否存在.
.第三方控件使用方法.
.Self-Delete程序之Delphi版本,终.
.组件制作之一(概念).
.Delphi中MIDAS是什么(MIDAS之一).
.Delphi与DirectShow&DSP.
.防止全局hook入侵Delphi版,2000.
.D7下的只能输入数字的控件(类似.
.使你的窗体保留在桌面的最上面.
.软件注册加密技术.
.delphi中的字符串处理,以及几个.
.更改图标对话框.
.字符画软件的四个关键技术.
.从数据库绘制MapX地图(二).
.在TwebBrowser中调用隐藏的IE命令.
.FastReport问题集.
.Delphi中实现文件拷贝的三种方法.
.使用XMLDocment遍历CSDN论坛帖子.
.关于SMTP和POP3使用及关于客户-服.
.原来的控件delphi7里何处寻?.

DLL文件在Delphi的创建及调用

发表日期:2006-2-4


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


上一篇:Delphi图书目录 人气:4319
下一篇:Delphi代码的标准风格 人气:3989
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐