PIntegerArray = ^TIntegerArray;
TIntegerArray = array[0..1023] of Integer;
PacketSize:Integer;Buffer:PIntegerArray;
PacketSize:=Buffer[0]; //是数组第一个原素吗?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      PacketSize: Integer;
      Buffer: PIntegerArray;
      a: TIntegerArray;
    begin
      Buffer := @a;
      Buffer[0] := 5;
      PacketSize := Buffer[0];
      inc(packetsize);
      showmessage(inttostr(packetsize));
    end;
      

  2.   

    静态数组和动态数组不同,静态数组是在栈内存中自动分配,一旦静态数组声明了,编译器就自动在栈进行分配了。而动态数组不同,动态数组实际上就是指针。只不过是个特殊点的指针,和string类型差不多。声明了一个动态数组,只是声明了一个四字节的指针。必须通过setlength给动态数组分配内存空间。