语法?BUG?

    技术2022-05-11  77

    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;

    不兼容,似乎有点说不过去!

     


    最新回复(0)