消息关闭
    暂无新消息!

delphi 开发动态库的问题,见代码!

问题作者 : 小雨2017-07-12发布
delphi动态库代码
function aaa(CardCode: PAnsiChar; var RtnStr: PAnsiChar):Integer;stdcall;
var
  Rtn: AnsiString;
begin
 
    ShowMessage(String(CardCode)); //正常显示
    Rtn :=  '001|测试|1|200.03|0|';
ShowMessage(String(Rtn)); //正常显示   001|测试|1|200.03|0|
    RtnStr := PAnsiChar(Rtn);
    ShowMessage(PChar(RtnStr));//不能正常显示    
result := 0; 
end;

pb9调用代码
string ls_ybkh, ls_trn,
int i

ls_ybkh = space(128)
ls_trn  = space(256)

ls_ybkh = "001"



i = GetPersonInfo(ls_ybkh, ls_trn)

MessageBox('a', ls_ybkh + '|' +  ls_trn + '|' + string(i))

在动态库里就不能显示要回传的字符串
在pb里也是乱码

好久不用delphi了,不知道怎么弄好了,请各位帮忙,分不够,开贴另给!!!


6个回答

︿ 2
你按两种方式都试一下就知道了。
另外,你的pb中GetPersonInfo(ls_ybkh, ls_trn)的函数原型声明是啥,和DLL中function aaa(CardCode: PAnsiChar; var RtnStr: PAnsiChar):Integer;stdcall;能不能对上,尤其是参数传递方式。

︿ 2
    RtnStr := PAnsiChar(Rtn);
    ShowMessage(PChar(RtnStr));//不能正常显示    

你都知道不能正常显示了,就不知道:ShowMessage(PAnsiChar(RtnStr)); ???