VC里面定义这样的函数 funname(char *str)现在要求我用delphi做动态链接库实现这样的功能
问题主要在数据类型上我查了一些资料,建议用pchar类型代替vc中的char *但是这个类型用到函数中就有问题了
VC里面如果函数funname对char *变量赋值后,函数结束这个内容还是存在的,因为传的是一个真正的指针
而delphi在函数里面对pchar变量赋值后,函数结束这个变量就没了不知各位大侠有什么好的解决方法?

解决方案 »

  1.   

    >>而delphi在函数里面对pchar变量赋值后,函数结束这个变量就没了指針, 道理一樣的, 看你代碼的聲明位置, 以及申請, 釋放內存的位置而已
      

  2.   

    pchar虽然也是指针,但是在函数里面调用不是传地址的吧
    比如我刚才说的函数
    function funname(str:pchar);
    begin
      str:=pchar('asdf');
    end;
    如果你定义一个pchar型全局变量x,
    然后调用funname(x),
    x的值并不会变成'asdf'啊
      
      

  3.   

    delphi用:PCHAR,VC用 TCHAR,我刚用过,没有问题
      

  4.   

    funname(var str:pchar); 行不行呢。
      

  5.   

    如果pchar应该可以,还有,你的函数必须这样定义
    funname(var str:pchar); function funname(str:pchar);
    var p:pChar;
    begin
      p:=strAlloc(5);
      StrPCopy( P, '12345');
      str:=p; 
    end;