Function IntToBin(N:Int64;L:Byte):Pchar;stdcall;
var
  i: Int64 ;
  j: Byte ;
  str1:string;
begin
  Result:='';str1:='';
  i:= N ;
  for j:=1 to L do
  begin
    str1:=str1+Chr(i mod 256 ); i:=i div 256 ;
  end ;
  result:=Pchar(str1);//在应用程序中调用时返回值出错
end;原函数是
Function IntToBin(N:Int64;L:Byte):String;
var
  i: Int64 ;
  j: Byte ;
  str1:string;
begin
  Result:='';str1:='';
  i:= N ;
  for j:=1 to L do
  begin
    str1:=str1+Chr(i mod 256 ); i:=i div 256 ;
  end ;
  result:=str1;
end;

解决方案 »

  1.   

    返回後,str1已被釋放。建議採用參數的方式,事先分配好內存,再將地址傳給此參數
      

  2.   

    str1是有结果的,只不过返回的结果不正确。
      

  3.   

    按1楼的试试吧,传申请地址的参数进来,用strlcopy赋值
      

  4.   

    1.不用引用ShareMem2.全部用shortstring类型3.如果能够,尽量不要用string回传参数,可以用integer代替(事先协议)
      

  5.   

    我在DLL中把String都替换成了Pchar,想用Pchar代替String回传参数。
      

  6.   

    PChar可以,你就
      var   
      MyProc=procedure(str:   pchar);stdCall;   
    这样就行了