为什么,小弟我的二维动态数据会报错

为什么,我的二维动态数据会报错?
本帖最后由 cowbo2 于 2014-06-11 23:32:34 编辑
本来有一个二维数组,它是固定的值,我想把它变成动态
可为什么我编译的时候可以过,但运行时在窗体运行时报错了
还有,如果我设动态数组,但是要从1开始,而不是0开始怎么办?


以下是一个类型声明文件a.pas,
type
 TRecArray = array of array of integer; //原来是array[1..8, 1..8] of integer;
var
ConstNum:integer;//定义动态数组长度

以下是b.pas是一个有窗口的文件,在FormCreate时有如下代码:
var
    eight: array of array of TLabel; //array[1..8, 1..8] of TLabel;
    EightCode: TRecArray ;
    i, j: Integer;
begin
   ConstNum:=8;//定义数组长度
    SetLength(eight,ConstNum,ConstNum);//设置数组长度
    SetLength(EightCode,ConstNum,ConstNum);//设置数组长度

    //显示
    for i := 1 to 8 do
        for j := 1 to 8 do
        begin
            eight[i][j] := TLabel.Create(self);     //??????????为什么到这里会报错,但原来如果全是8的固定值就不会?
            eight[i][j].Parent := self;
            eight[i][j].Width := 20;
            eight[i][j].Height := 20;
            eight[i][j].Left := (i - 1) * 20 + 200;
            eight[i][j].Top := j * 20 + 420;
            eight[i][j].Color := clRed;
        end;

end.


------解决方案--------------------
动态数组下标从0开始的。
循环0到7