我试了一下,
虽然我知道我的pbyte变量gettext
gettext^的数据是$12345678比如,
但是我用
for i:= 0 to count-1 do
text[i]:= gettext^;
这种方法就说某地址访问错误。
for i:= 0 to count-1 do
用text[i]:=gettext[i]^
又说gettext不是数组。
如果用string变量strout去接收
strout:=gettext^;却是类型不匹配
或者用
strout:=gettext也是类型不匹配。所以我想知道如何将pbyte指向的数据存到另一个byte数组中去,或者如何增加pbyte指向的地址。

解决方案 »

  1.   

    var
      p:PByte;
      b:array[0..10] of Byte;
    for i:=0 to 10 do
    begin
      b[i]:=P^;
      Inc(P);//可能是 Inc(PChar(p)); 
    end;
      

  2.   

    使用Move方法!!!Move( P^, B[ 0 ], Size );
    P是你的PByte指针
    B是你的鼠族的第一个元素
    Size是大小。如果要赋值到Char数组中,要进行指针类型的转换
    Var
      Q : PChar;Q := PChar( P );
    Move( Q^, B[ 0 ], Size );
      

  3.   

    不可能啊,你看我下面这段程序,我甚至都没有给 p 分配空间,也没有出现访问错误。procedure TForm1.Button1Click(Sender: TObject);
    var
      p:Pbyte;
      b:array[0..10] of byte;
      i:integer;
    begin
      for i:=0 to 10 do
      begin
        b[i]:=p^;
        Inc(p);
      end;
    end;贴出你的源码看看