请教:PChar支持哪些操作!

解决方案 »

  1.   

    很多函数,API,不能用string,都用PChar。
      

  2.   

    N多啦,看Help就知道
    API都只能是PCHAR的PCHAR可以与String相互Convert的http://lysoft.7u7.net
      

  3.   

    windows系统都是以空字符为结束符号,而DELPHI的PCHAR也是以空0字符为结束符号
    所以在调用API函数时,都用PCHAR来做强制转换,其实PCHAR可以理解为一个空的无类型的指针,有点像 array of char 或者 string
    但是你开始的时候要初始化这个变量,
      p:Pchar;
      buf: array[0..9]of char;  new(p);
      buf:='1234567890';
      p:=buf;       
      

  4.   

    能不能在不用string的情况下,实现pchar的相加呢?
      

  5.   

    function StrECopy(Dest:PChar; const Source: PChar): PChar; $[SysUtils.pas
    功能 返回将指针字符串Source复制到指针字符串Dest中的结尾
    说明 可以连接指针字符串
    参考 
    例子
    ///////Begin StrECopy
    procedure TForm1.Button1Click(Sender: TObject);
    var
    vBuffer: array[0..255] of Char;
    begin
    StrECopy(StrECopy(vBuffer, PChar(Edit1.Text)), PChar(Edit2.Text));
    Edit3.Text := vBuffer;
    end;
    ///////End StrECopy
      

  6.   

    能不能在不用string的情况下,实现pchar的相加呢?当然可以了 比如
    function Add(var pOld:PChar; const pAdd:PChar):PChar;
    var
     i,j:Integer;
     pTmp, pTmp2: PChar;
    begin
      // 略去各种判断
      i := Length(pOld);
      j := Length(pAdd);
      GetMem(pTmp, i + j + 1);
      StrCopy(pTmp, pOld);
      pTmp2 = pTmp;
      Inc(pTmp, i);
      StrCopy(pTmp2, pAdd); // 好像不支持 StrCopy(pTmp+i, pAdd);
      FreeMem(pOld);
      pOld := pTmp;
      Result := pOld;
    end;随手写 没什么优化之类的了。1. 它是一个指针 具有指针的基本性质 转换 移动等
    2. 它是一个字符串指针 具有字符串的特性^_^ 也刚好是 概念上的继承 或者 说 组合。。
      

  7.   

    delphi 好像不支持 重载操作符
    所以用函数代替。。