程序源码
函数声明:
Function DataDown_sp(InStr,InBz :String;Var OutStr:String):Pchar;stdcall;external 'C:\Tjyb\yhybReckoning.dll' name '_DataDown_sp@12';
函数调用:
Var
Tjyb_ResStr :Pchar;
Tjyb_InStr :Pchar;
Tjyb_InBz :Pchar;
Tjyb_OutStr :Pchar;
Tjyb_OutStr :String;
Begin
tjyb_resStr := '';
tjyb_instr :=';6091201062999999992=';
tjyb_inbz := 'U';
Tjyb_ResStr := DataDown_sp(tjyb_instr,tjyb_inbz,Tjyb_OutStr);
End;
问题:
Tjyb_OutStr和DataDown_sp的outstr 如果都定义成string时,就不能接收DataDown_sp函数的传出值,运行时会出现地址错误,如果是定义成shortstring就可以,但是shotrstring长度有限制,只能有255长度。
大家有没有调用pb的dll这方面的经验???
函数声明:
Function DataDown_sp(InStr,InBz :String;Var OutStr:String):Pchar;stdcall;external 'C:\Tjyb\yhybReckoning.dll' name '_DataDown_sp@12';
函数调用:
Var
Tjyb_ResStr :Pchar;
Tjyb_InStr :Pchar;
Tjyb_InBz :Pchar;
Tjyb_OutStr :Pchar;
Tjyb_OutStr :String;
Begin
tjyb_resStr := '';
tjyb_instr :=';6091201062999999992=';
tjyb_inbz := 'U';
Tjyb_ResStr := DataDown_sp(tjyb_instr,tjyb_inbz,Tjyb_OutStr);
End;
问题:
Tjyb_OutStr和DataDown_sp的outstr 如果都定义成string时,就不能接收DataDown_sp函数的传出值,运行时会出现地址错误,如果是定义成shortstring就可以,但是shotrstring长度有限制,只能有255长度。
大家有没有调用pb的dll这方面的经验???
Tjyb_ResStr := DataDown_sp(tjyb_instr,tjyb_inbz,Tjyb_OutStr);
这句语句能够运行过去,Tjyb_ResStr也可能获得到值,就是Tjyb_OutStr得不到值
改为array或PChar.
如果有PB的DLL源码, 建议转为兼容的基本类型的变量.
luxuewei5214(小卢)
同borlndmm.dll一起发布是什么意思,这个borlndmm.dll哪里有,
我是一个小菜,不是很懂
就是把var去掉了就可以了,但是有一个问题是传出的参数OutStr会多一个空格,不知大家会不会这样