怎样在DLL的函数中返回记录类型的数据?怎样定义?在调用的那边又是怎样定义和调用?请给我示例! 怎样在DLL的函数中返回记录类型的数据?怎样定义?在调用的那边又是怎样定义和调用?请给我示例! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //主程序的代码unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; jk_handle:Thandle;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);var jk:procedure (cs:string);stdcall; // 传递参数:csbegin jk_handle:=loadlibrary(pchar('test'));// 加载test.dll if jk_handle<=0 then // 不存在DLL begin Application.messagebox('动态链接库加载失败!','提示',64); FreeLibrary(jk_handle); exit; end else // 存在DLL begin try @jk:=GetprocAddress(jk_handle,'jk_cscd'); jk('传递的参数'); FreeLibrary(jk_handle); except Application.messagebox('动态链接库加载失败!','提示',64); exit; end; // end of except end;end;end.///////////////////////////test.dll的代码工程代码library xt_klxg;uses Forms, unit1 in 'u_main_klxg.pas';{$R *.RES}exports jk_cscd; // 参数传递beginend.Form1代码unit u_main_klxg;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ADODB, DB;type TForm1 = class(TForm) private { Private declarations } public p_cs; { Public declarations } end;var f_main_klxg: Tf_main_klxg; procedure jk_create; procedure jk_free; procedure jk_cscd(cs:string);stdcall; // 参数传递implementationuses u_dm;{$R *.DFM}procedure jk_create;begin Application.CreateForm(TForm1,Form1);end;procedure jk_free;begin if assigned(Form1) then Form1.free;end;procedure jk_cscd(cs:String);stdcall;begin try jk_create; Form1.p_cs:=cs; Form1.ShowModal; finally jk_free; end;end;procedure Tf_main_klxg.Button1Click(Sender: TObject);begin ShowMessage('p_cs');end;end. 可以使用参数返回注意:不要使用var,在Dll中最好不要用stdcall直接些就可以了 如:(dll中)type TA = record a: integer; b: word;end;procedure test(a: TA); export;调用跟一般函数调用是一样的。 在这个贴子http://expert.csdn.net/Expert/topic/1394/1394209.xml?temp=.9534113不是已经回答了吗? exe中的res,想用别的res替换,用什么软件可以做到!? 如果一个程序中要用到十几个窗口大家会怎么做? 一个复杂的SQL问题: ImageList1为什么不能存大张图片,如果可以存大张的图,还有如果Image能连接ImageList,就方便多了 一个奇怪的问题 数据控件传入DLL的问题,高手赐教!!! delphi的优点? 谁有源代码?利用NMFTP对服务器一个文本文件做I/O操作? 关于FASTNET中NMFTP控件的疑问 为什么DELPHI6中的预览和打印的效果不一样 sql问题 关于insert等 ado用update出现地址错误?急
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
jk_handle:Thandle;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
jk:procedure (cs:string);stdcall;
// 传递参数:cs
begin
jk_handle:=loadlibrary(pchar('test'));// 加载test.dll
if jk_handle<=0 then // 不存在DLL
begin
Application.messagebox('动态链接库加载失败!','提示',64);
FreeLibrary(jk_handle);
exit;
end
else // 存在DLL
begin
try
@jk:=GetprocAddress(jk_handle,'jk_cscd');
jk('传递的参数');
FreeLibrary(jk_handle);
except
Application.messagebox('动态链接库加载失败!','提示',64);
exit;
end; // end of except
end;end;end.
///////////////////////////
test.dll的代码工程代码
library xt_klxg;uses
Forms,
unit1 in 'u_main_klxg.pas';{$R *.RES}exports
jk_cscd; // 参数传递beginend.Form1代码
unit u_main_klxg;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, ADODB, DB;type
TForm1 = class(TForm)
private
{ Private declarations }
public
p_cs;
{ Public declarations }
end;var
f_main_klxg: Tf_main_klxg;
procedure jk_create;
procedure jk_free;
procedure jk_cscd(cs:string);stdcall; // 参数传递implementationuses u_dm;{$R *.DFM}procedure jk_create;
begin
Application.CreateForm(TForm1,Form1);
end;procedure jk_free;
begin
if assigned(Form1) then Form1.free;
end;procedure jk_cscd(cs:String);stdcall;
begin
try
jk_create;
Form1.p_cs:=cs;
Form1.ShowModal;
finally
jk_free;
end;
end;procedure Tf_main_klxg.Button1Click(Sender: TObject);
begin
ShowMessage('p_cs');
end;end.
如:(dll中)
type TA = record
a: integer;
b: word;
end;procedure test(a: TA); export;调用跟一般函数调用是一样的。
http://expert.csdn.net/Expert/topic/1394/1394209.xml?temp=.9534113不是已经回答了吗?