DELPHI 制作的 DLL 函数返回类型为 pchar ,在 PB 中用 String 声明,但是接收到的字串后面附带一些乱字符,如:实际字串是 33260380,但取得的是 33260380 $ ,多了几个空格和一个 $ 字符,不知是何问题,烦请精通 Delphi 或 PB 的各路大侠不吝赐教!以下是我的 Delphi 函数和 PB 声明,大家帮忙看看问题出在哪里。function xml_getdata(nRow: Integer; cAttrib: PChar): PChar; stdcall; export;
Var
ls_Value:String;
begin
ls_Value:=f_GetData(nRow,cAttrib); // 这一行是绝对没有问题的,问题可能就在下面这几行。 Result:=PChar(ls_Value);
end;PB 声明:
function string xml_getdata(Integer nRow,String cAttrib) Library 'wsxmldat.dll'
Var
ls_Value:String;
begin
ls_Value:=f_GetData(nRow,cAttrib); // 这一行是绝对没有问题的,问题可能就在下面这几行。 Result:=PChar(ls_Value);
end;PB 声明:
function string xml_getdata(Integer nRow,String cAttrib) Library 'wsxmldat.dll'
再或者在pb中的string里判断#0,自己截取
在dll中加入sharemem ,应该没有问题,我以前做过这方面的开发。
sharemem,
wsxmlexport;Exports
wsxml_getdata;begin
end.wsxmlexport 单元中声明如下:function wsxml_getdata(nRow: Integer; cAttrib: string): string; stdcall; export;
function xml_getdata(nRow: Integer; cAttrib: String): PChar; stdcall; export;试一下!