小弟刚学DELPHI,目前做一个dll处理字符串,将两个字符串合并生成另一个字符串:
library MyMaxTest;
uses
  SysUtils,
  Classes;
Function ReadCard(Pone : Pchar;Ptwo: Pchar;var OutBuffer : Pchar) : Integer;stdcall;
Var
  presult : Pchar;
Begin
  OutBuffer := Pchar(String(Pone) + String(Ptwo));
  Result := 1;
End;{$R *.RES} 
exports
ReadCard;begin
end.
编译工程或使用在DELPHI中声明和调用没有问题,可是给朋友使用powerbuilder声明调用后返回的字符串是不定的乱码字符。怎么测试调试都搞不定呀。小弟愚笨,望大虾们指点呀。

解决方案 »

  1.   

    Pchar(String(Pone) + String(Ptwo)) 得到的结果出了函数体也就失去了生存期, delphi 也是看着正确这两天问这样的事的人是大把, 你应该让调用者这边分配一个空间ReadCard(Pone : Pchar;Ptwo: Pchar; OutBuffer : Pchar; OutBuffer:Integer)...string(OutBuffer) := String(Pone) + String(Ptwo); 至少应这样
      

  2.   

    返回ARRAY OF CHAR可以让PB调用的!
      

  3.   

    但是dephi中明确规定在编写dll时必须使用pchar类型,使用array of char能行吗?这个问题好象也应该不是非常难的一个函数调用而已,我好象怎么试都不行的?有哪个大虾将这个简单的函数完全写出来让小弟参考呀。汗呀。学delphi不精呀......