网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.将某一主机域名解析为IP地址。.
.QQ聊天记录器演示程序.
.DELPHI中动态获得SQLSERVER数据库.
.提取win98上网密码.
.在Delphi中读取另一台计算机的屏.
.隐藏我的电脑中驱动器.
.建立自己的csdn知识管理库(1).
.Delphi中MIDAS如何控制前台权限(.
.datatree和数据库绑定的最少代码.
.组件制作之五(托盘组件).
.delphi运行错误信息.
.沉默的异常--Delphi帮助寻宝之一.
.在Delphi程序中调用控制面板设置.
.让窗体在执行了“显示桌面”以后.
.Delphi菜单如何做成word2000的可.
.如何获取自己在程序中运行的外部.
.关于动态代理.
.Format的用法.
.用Delphi5.0实现注册表监视.
.关于在COM中使用可选参数的研究.

DELPHI中动态调用dll

发表日期:2006-2-4


 

显式例子:

 

unit Main;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, DBTables, DBCtrls;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Image1: TImage;

    DataSource1: TDataSource;

    Table1: TTable;

    Table1SpeciesNo: TFloatField;

    Table1Category: TStringField;

    Table1Common_Name: TStringField;

    Table1SpeciesName: TStringField;

    Table1Lengthcm: TFloatField;

    Table1Length_In: TFloatField;

    Table1Notes: TMemoField;

    Table1Graphic: TGraphicField;

    DBGrid1: TDBGrid;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

//  function GetInteger(I:Integer): Integer;stdcall;external 'DLLOne.dll';

//  function GetDouble(F:Double): Double;stdcall;external 'DLLOne.dll';

 

  TGetDouble = function (F:Double): Double; stdcall;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var D: Double;

    DLLHandle: THandle;

    Func: TGetDouble;

begin

  Image1.Picture.Assign(Table1Graphic);

  Table1Graphic.Assign(Image1.Picture);

  Exit;

  DLLHandle := LoadLibrary('DLLOne.dll');

  try

  @Func := GetProcAddress(DLLHandle, 'GetDouble');

 

  //Edit1.Text := IntToStr(GetInteger(2));

  //D := GetDouble(2.2);

  if Assigned(@Func) then

  begin

    D := Func(2.2);

    Edit2.Text := FloatToStr(D);

  end;

 

  finally

  FreeLibrary(DLLHandle);

  end;

end;

 

end.

 

隐式例子:

 

library DLLOne;

 

uses

  SysUtils,

  Classes;

 

{$R *.res}

 

  function GetDoubleExt(F:Double): Double;stdcall;external 'DLLTwo.dll';

  function GetInt(I:Integer): Integer;stdcall;external 'DLLTwo.dll';

 

  function GetInteger(I:Integer): Integer;stdcall;

  begin

    Result := GetInt(I);

  end;

 

  function GetDouble(D:Double): Double;stdcall;

  begin

    Result := GetDoubleExt(D);

  end;

 

exports

  GetInteger,

  GetDouble;

 

begin

end.

 

 

 

 

 

 

 

library DLLTwo;

 

{ Important note about DLL memory management: ShareMem must be the

  first unit in your library's USES clause AND your project's (select

  Project-View Source) USES clause if your DLL exports any procedures or

  functions that pass strings as parameters or function results. This

  applies to all strings passed to and from your DLL--even those that

  are nested in records and classes. ShareMem is the interface unit to

  the BORLNDMM.DLL shared memory manager, which must be deployed along

  with your DLL. To avoid using BORLNDMM.DLL, pass string information

  using PChar or ShortString parameters. }

 

uses

  SysUtils,

  Classes;

 

{$R *.res}

  function GetDoubleExt(D:Double):Double ;stdcall;

  begin

    Result := D;

  end;

  function GetInt(I:Integer): Integer;stdcall;

  begin

    Result := I;

  end;

 

exports

  GetDoubleExt,

  GetInt;

 

begin

end.

上一篇:通过api和键盘钩子彻底屏蔽任务条和开始菜单 人气:3640
下一篇:用Delphi编写自己的可视化控件 人气:4543
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐