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 上面。不知道怎么写。请教下。
...全文
1253打赏收藏
数组的内存读取方式
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 上面。不知道怎么写。请教下。
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;
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]);