比如原来有个函数是这样的:procedure GetMsg(ret: Integer; var Msg: string); stdcall; //返回消息
begin
  Msg := 'OK';
end;现在改成这样:
procedure GetMsg(ret: Integer; var Msg: PChar); stdcall; //返回消息
begin
  StrPCopy(Msg, 'OK');
end;这里的 var Msg: PChar 是否一定要加 var 才是正确的写法?

解决方案 »

  1.   

    var的意思是引用传递,就是如果你在GetMsg中改变了Msg的值,那么调用GetMsg的函数或过程中的Msg变量也会改变值。按你这段代码的意思,应该是要加上var
      

  2.   


    Pchar传递的不就是指针了吗?为什么要加上var呢?
      

  3.   

    申请了内存,可不加procedure GetMsg(ret: Integer; Msg: PChar);stdcall; //返回消息
    begin
      StrPCopy(Msg, 'OK');
    end;var
      P:Pchar;
    begin
      P:=stralloc(1024);
      GetMsg(100,P);
      showmessage(P);
      strdispose(P);
    end;
      

  4.   

    如果 程序中 要在DLL 中 返回 string, 还是要用 var的。