1、String到PChar
  var
    pc:PChar;
    s:String;
....
  pc:=StrAlloc(1000);
  StrPCopy(pc,s);
  StrDispose(pc);
如果只是作为函数的参数的话,直接使用类型转换就行了 pc:=PChar(s);2、PChar到String
  s:=String(pc);

解决方案 »

  1.   

    1.   pc:=PChar(s);也行,pc依赖s的内容;
      

  2.   

    2.   s:=pc;  ?!也行吧
      

  3.   

      var
        pc:PChar;
        s:String;  pc:=pchar(s);
      s:=pc;
      

  4.   


      若String中有#0呢?
      

  5.   

    pchar 存在是为了和api函数参数兼容。
    通常情况下pchar 和string 可以通用,我们需要考虑的只是通过语法检查,有的参数类型要pchar,强制转化以下就ok了.
    string 本来就是#0结尾。
      

  6.   

    长string中好象不允许有#0,
    除了尾#0
      

  7.   

    长字符串STRING是空终止的,所以可以与WINDOWS的PCHAR兼容。
    举个例子看看吧:
    e.g.
      var 
        str:string;
      begin
        SetLength(str,100);
        GetWindowText(Handle,PChar(str),Length(str));//这是转换了
        //str:=str+'is the title';//如果这样写,再STR中你看不到后面的‘IS THE TITLE’字符川
        str:=string(PChar(str));//STR是STRING类型的,转换回自己是无效的,注意了
        str:=str+'is the title';
      end;