procedure TForm1.Button1Click(Sender: TObject);
var
v: ^Integer;
p: ^Integer;
i, Len: Integer;
begin
Len := 6;
GetMem(v, Sizeof(Integer) * Len);
p := v;
for i := 0 to 5 do
begin
p^ := i * i;
Inc(p);
end;
FreeMem(v);
end;
上述代码出现编译错误:Incompatible types。
但是,如果将
v: ^Integer; p: ^Integer;改为:
v, p: ^Integer;// p: ^Integer;或者改为:
v: PInteger; p: PInteger;
则编译通过。
Delphi语法如此,还是Delphi的BUG?
如果说将^Integer改为PInteger编译通过,是因为语法规定^Integer不等于type PInteger = ^Integer,是说得过去的,但是
v: ^Integer;
p: ^Integer;
与
v, p: ^Integer;
不兼容,似乎有点说不过去!