var p:array of pbyte;
   i:integer;
begin
       p:=pointer($400000);
       for i := 1 to 10 do
       begin
   (p)^(i);    //这里编译不过去
       //pbyte(p)^[i];  //这里也编译不过去
       end;
       //smemo1.Lines.Add(pbyte(p)^[i]);
end;
   我想要的是从$400000开始 读出15个字节,显示到memo 上面。不知道怎么写。请教下。
  

解决方案 »

  1.   

    var 
      p:array of pbyte;
      i:integer;
      p2:Pbyte;
      p3 : array[0..9] of byte;
      s:string;
    begin
       s := 'dkddkfjkdfjsklfjksajfksajfskdjfdsf';
          fillchar(p3,10,0);
          p2 := pointer(pchar(s));
          for i := 0 to 9 do
          begin
            p3[i] := p2^;
            inc(p2);
          end;
          //smemo1.Lines.Add(pbyte(p)^[i]);
     
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      p:pbyte;
      i:integer;
      c:byte;
    begin
      p:=pbyte($400000);
      for i := 1 to 10 do
      begin
        c:=p^;
        inc(p);
        Memo1.Lines.Add(inttohex(c,2));
      end;end;