C里面如果要取 Char 数组的第三个项目的值只要 *(P + 2)  (对吧?我有段时间没写C了)
那Delphi里使用 (P + 2)^ := 's';
为何会报错呢? 有不用先 Inc(P, 2) 的法子吗?
P 是 PChar

解决方案 »

  1.   

    你的p申请内存了吗?,这样没问题
    procedure TForm1.Button1Click(Sender: TObject);
    var
    p:pchar;
    begin
      getmem(p,10);
      (p+2)^:='s';
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a : PChar;
    begin
       a := pchar('abcd');
       a :=a+2;
       ShowMessage(a);
    end;
      

  3.   

    阿,我不知道PByte是不是有不同,我的原式是这样的, 请指教:function TColorToARGB(C: Integer): Integer;
    var
      PR: PByte;
    begin
      PR := @Result;
      PR^ := (PByte(@C) + 3)^; //报错
    end;
      

  4.   

    var
      PR: PByte;
    begin
      PR := @Result;
      PR^ := (PByte(@C))^; 
    end;这样就可以了 ~~~
      

  5.   

    Pbyte不能像Pchar那样使用加号位移取数组成员吗?(p+2)^ := 
      

  6.   

    Pbyte不能像Pchar那样使用加号位移取数组成员吗?(p+2)^ := 
    不能
      

  7.   

    原来如此~~之前好几次报错只好改数据格式~~那以后就知道用pchar了
    thx