dll中的函数的返回多个参数的问题. ( 积分: 100 )

  • 主题发起人 主题发起人 doby_li
  • 开始时间 开始时间
D

doby_li

Unregistered / Unconfirmed
GUEST, unregistred user!
现在要写个函数,有多个输入参数和输出参数,
现不知道delphi中如何编写这种函数,主要是不知道语法,格式.

我现在是这样写的:
function Read_Card(port,password:pchar;out factory,cardno,factor,writeno
:pchar):pchar;stdcall;
begin
factory:='mytest1';
cardno:='mytest2';
writeno:='mytest3';
result:='ok';
end;

不知道上述写法对不对,另外应当如何调用这个函数,以取得这个函数的某个返回参数的值,如想取得cardno的值为:mytest2?

各位能不能贴个这种有多个输入参数和输出参数的函数给我参考一下呀.
非常感谢.
 
看看DELPHI基础阿.......

windows.pas
function OpenFile(const lpFileName: LPCSTR; var lpReOpenBuff: TOFStruct; uStyle: UINT): HFILE; stdcall;
 
帮顶一下,接个分
 
格式如下:
function Read_Card(Index:integer;index1:integer;weight:char):integer;stdcall;
var str:string;
begin
try
Result:=0
except
Result:=1
end
end;
 
谢谢各位,
现在还有两个问题:
1。在声明时如何区分哪些是输入参数,哪些是输出参数?
如我的之前写的函数:
function Read_Card(port,password:pchar;out factory,cardno,factor,writeno
:pchar):pchar;stdcall;
这里面有个out,是不是out后面的都是输出参数呀?
2。在调用这个函数时,如何取出这个函数的某个输出参数的值?

再次感谢。
 
顶一下。
 
只要参数是PChar就可以既是输入,也可用来输出
同时,若是输出,最好先定义一个内存区:
mG_DateTime:=StrAlloc(80);
返回值一般是Integer,可用来判断函数是否运行成功!
 
谢谢楼上朋友。
我在函数体内给传出参数赋值的话,是不是也在先在函数体内先定义?
如下:
function Read_Card(const port,password:pchar;out factory,cardno,factor,writeno,res
:pchar):Boolean;stdcall;
var factory,cardno,factor,writeno,res:pchar;
begin
factory:='11111';
cardno:='22222';
factor:='33333';
writeno:='4444';
res:='5555';

result:=true;
end;

我要做的这个函数就是一个读IC卡的函数,要求是传入两个参数值,然后传出30个返回值给别的系统,
别的调用这个dll的系统是用c++,还有java等写的.

现在的问题还有我就是用delphi做一个调用程序demo.exe,也没办法取到这个函数的传出参数的值。

请指点,谢谢。
 
function OpenFile(const lpFileName: LPCSTR; var lpReOpenBuff: TOFStruct; uStyle: UINT): HFILE; stdcall;

参考这个
 
delphi数据类型的,在前面加var
若用pchar,在主程序先分配空间。
对于变长参数的返回,使用全局内存块。

例:
RemoteProcess(inText: string; inStream: TMemoryStream; var outText: string; var outStream: TMemoryStream): boolean; stdcall;
两个入口参数,两个出口参数,一个成功与否的返回值。
DLL中,直接对OutText、OutStream进行赋值即可。
 
谢谢各位。
我的函数可能只能采用pchar型的,因为这个dll要给别的系统来调用,别的系统是用vbscript来调用我这个dll。

请各位能否贴出用pchar的带多个输入和输出参数的函数声明,以及函数体,
因为上面贴的那几个函数,我没找到对应的函数体。

再次感谢。
 
急顶,十万火急呀。
 
建议楼主看看书吧!
别动不动就问!
 
后退
顶部