library TestDll;uses
SysUtils,Variants,
Classes;{$R *.res}function Test(ID:Integer;var v:Variant):Boolean;stdcall;
var c:PChar;
begin
Result :=false;
Case ID Of
0:v :=100;
1:v :=12.3456;
Else
v :=VarArrayCreate([0,0],varVariant);
v[0] :='abcdefg';
End;
end;exports
Test;
begin
end.
procedure TForm1.Button1Click(Sender: TObject);
var h:Cardinal;v:Variant;MyFun:function(ID:Integer;var v:Variant):Boolean;stdcall;
s :String;
begin
h :=LoadLibrary('TestDll.dll');
try
if h<>0 then
begin
MyFun :=GetProcAddress(h,'Test');
if @MyFun<>nil then
try
if MyFun(self.SpinEdit1.Value,v) then
s :='true '
else s :='false ';
if not VarIsArray(v) then
s :=s+VarToStr(v)
else
s :=s+v[0];
Memo1.Lines.Add(s);
except
Memo1.Lines.Add('Err');
end;
end;
finally
FreeLibrary(h);
end;
end;
SysUtils,Variants,
Classes;{$R *.res}function Test(ID:Integer;var v:Variant):Boolean;stdcall;
var c:PChar;
begin
Result :=false;
Case ID Of
0:v :=100;
1:v :=12.3456;
Else
v :=VarArrayCreate([0,0],varVariant);
v[0] :='abcdefg';
End;
end;exports
Test;
begin
end.
procedure TForm1.Button1Click(Sender: TObject);
var h:Cardinal;v:Variant;MyFun:function(ID:Integer;var v:Variant):Boolean;stdcall;
s :String;
begin
h :=LoadLibrary('TestDll.dll');
try
if h<>0 then
begin
MyFun :=GetProcAddress(h,'Test');
if @MyFun<>nil then
try
if MyFun(self.SpinEdit1.Value,v) then
s :='true '
else s :='false ';
if not VarIsArray(v) then
s :=s+VarToStr(v)
else
s :=s+v[0];
Memo1.Lines.Add(s);
except
Memo1.Lines.Add('Err');
end;
end;
finally
FreeLibrary(h);
end;
end;
解决方案 »
- 急。。80分求用clientDataset处理image类型的字段,delta怎么解析成SQL语句?
- [求助]网上缴费系统的通信方式问题
- 这样的数据该怎么接收啊?
- 如何实现监控用户登录WINDOWS系统
- 求助!!谁有dbgrideh控件啊?给否给我一份。或者网址也行。谢了!!
- INTERNET通讯问题,高手来啊。
- 真奇怪 TStrings的IndexOf 和IndexOfName 有什么区别呢?很奇怪?
- delphi与access
- c/s结构的程序能跨网段用吗?
- 我编写的程序都有登陆,怎样去除?
- 各位牛人,请教一个触摸屏中文输入法的问题,大家都来看看啊,也许有一天你也会遇见类似问题的。顶就有分(软键盘每个键太小,要自己做)
- 请问如何得到窗体内的当前焦点在哪个控件上?谢谢
独特的双数据源连接,全功能的表格组件!http://www.anylib.com
还不如用PChar更方便
如果调用者是Delphi开发的,直接用String就可以
如果调用者是C/C++,一样识别不了Variant类型
还是老老实实用PChar吧
str=new string[255];
用DELPHIMM增加发布时候的size。
用PChar只能一个参数。
用v,可以传递任意多个参数。
参数个数不能确定的时候,我这招很管用。