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了,不知道怎么弄好了,請各位幫忙,分不夠,開貼另給!!!
uj5u.com熱心網友回復:
RtnStr := PAnsiChar(Rtn);ShowMessage(PChar(RtnStr));//不能正常顯示
你都知道不能正常顯示了,就不知道:ShowMessage(PAnsiChar(RtnStr)); ???
uj5u.com熱心網友回復:
在pb里顯示的還是亂碼!uj5u.com熱心網友回復:
pb里面的string是ansistring還是unicodestring要搞清楚。uj5u.com熱心網友回復:
pb里的string不知道是什么呀uj5u.com熱心網友回復:
你按兩種方式都試一下就知道了。另外,你的pb中GetPersonInfo(ls_ybkh, ls_trn)的函式原型宣告是啥,和DLL中function aaa(CardCode: PAnsiChar; var RtnStr: PAnsiChar):Integer;stdcall;能不能對上,尤其是引數傳遞方式。
uj5u.com熱心網友回復:
StrPCopyuj5u.com熱心網友回復:
pansichar與string是不能直接相互轉換的,采用StrPCopy轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/70483.html
標籤:語言基礎/算法/系統設計
