delphi编写调用有窗体有返回值的dll的实现方1

delphi编写调用有窗体有返回值的dll的实现方1

ID:40743855

大小:51.50 KB

页数:8页

时间:2019-08-07

delphi编写调用有窗体有返回值的dll的实现方1_第1页
delphi编写调用有窗体有返回值的dll的实现方1_第2页
delphi编写调用有窗体有返回值的dll的实现方1_第3页
delphi编写调用有窗体有返回值的dll的实现方1_第4页
delphi编写调用有窗体有返回值的dll的实现方1_第5页
资源描述:

《delphi编写调用有窗体有返回值的dll的实现方1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、delphi编写调用有窗体有返回值的dll的实现方法本人使用的delphi是5.0版,用delphi编写dll工程很简单,在新建。。中就有创建Dll的选项。在编写DLL工程时,需要注意的包括,工程单元有很大差异,一个关键字是program,一个关键字是library。dll工程单元中还包括exports子句,那些需要提供给其他主叫程序调用的过程,都需要包括在exports中(只是列出函数的名字,不需要参数表)。对于主叫方(调用dll的应用程序或者其他dll),则需要在调用之前进行外部声明,即external保留字指示的声明。另外需要了解objectpascal中有关调用协议的内

2、容,在objectpascal中对于过程或函数有以下五种调用协议:指示字参数传递顺序参数清除者参数是否使用寄存器register自左向右被调例程是pascal自左向右被调例程否cdecl自右向左调用者否stdcall自右向左被调用例程否safecall自右向左被调用例程否这里的指示字就是在声明函数或过程时附加在例程标题之后的保留字,默认为register,即是唯一使用CPU寄存器的参数传递方式,也是传递速度最快的方式;pascal:调用协议仅用于向后兼容,即向旧的版本兼容; cdecl:多用于C和C++语言编写的例程,也用于需要由调用者清除参数的例程; stdcall:和saf

3、ecall主要用于调用WindowsAPI函数;其中safecall还用于双重接口。现在以一个实例来说明一个用delphi编写的程序如何调用包含form窗体dll的程序。Dll工程:libraryProject2;{ImportantnoteaboutDLLmemorymanagement:ShareMemmustbethefirstunitinyourlibrary'sUSESclauseANDyourproject's(selectProject-ViewSource)USESclauseifyourDLLexportsanyproceduresorfunctionstha

4、tpassstringsasparametersorfunctionresults.ThisappliestoallstringspassedtoandfromyourDLL--eventhosethatarenestedinrecordsandclasses.ShareMemistheinterfaceunittotheBORLNDMM.DLLsharedmemorymanager,whichmustbedeployedalongwithyourDLL.ToavoidusingBORLNDMM.DLL,passstringinformationusingPCharorShor

5、tStringparameters.}usesSysUtils,Classes,Unit1in'Unit1.pas'{Form1};{$R*.RES}exportsExecutename'Execute';{过程来自于Unit1}beginend.——————————————————————————————————————unitUnit1;interfaceuses8Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,Db,ADODB;typeTForm1=class(TForm

6、)ADOcon:TADOConnection;Memo1:TMemo;private{Privatedeclarations}public{Publicdeclarations}end;functionExecute(ApplicHandle:TApplication;MainHandle:THandle;AdoObj:TADOConnection;AdoConnectionString:PChar):boolean;stdcall;export;varForm1:TForm1;implementation{$R*.DFM}functionExecute(ApplicHandl

7、e:TApplication;MainHandle:THandle;AdoObj:TADOConnection;AdoConnectionString:PChar):boolean;stdcall;export;varoldhandle:THandle;beginOldHandle:=Application.Handle;;Application.handle:=ApplicHandle.handle;Application.CreateForm(Tform1,Form1);Form1.AD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。