var
 aa : array of array of integer;
begin
  setLength(aa,常数数组个数);
  aa[0]:= a1;
  aa[1]:= a2;
  ...
  aa[i]:= ai;
end;

解决方案 »

  1.   

    但编译会出错的,就在aa[0]:=a1以后的编译中,会出现
    Incompatible Types:'array' and 'Dynamic array'这样的错误,请解释一下好吗?谢谢
      

  2.   

    哦,忘了一句,先 setlength(aa[0],length(a1));
      

  3.   

    同意neweb(永不言败) 的看法,
    var
     aa : array of array of integer;
    begin
      setLength(aa[0],length(a1));
      aa[0]:= a1;
      setlentth(aa[1],length(a2));
      aa[1]:= a2;
      ...
      setlength(aa[i],length(ai));
      aa[i]:= ai;
    end; 
      

  4.   

    而且,这种思路都有点问题,我是将a1数组本身,也就是一个指针赋给aa[0],而a1已经分配了空间了,因此不需要再为aa[0]分配空间,是这样吧?
      

  5.   

    思路没问题啊,aa[0] := a1 并没有浪费内存,当你改变 a1 的元素,aa[0]也一起被改变了,我一直这么用的,是不是跟你的不等长数组有关?
      

  6.   

    我弄错了,aa: array of array of integer; 其实是个二维数组,但是你的常数数组不等长,只能 aa[0][0]:=a1[0] ;这样的话也许还不如不用,我试了 aa := varArrayCreate([0,1],varArray) ;也不行,看来还是用指针好。
      

  7.   

    var
     aa : array of array of integer;
     a1:array[0..4] of integer;
     a2:array[0..2] of integer ;
    begin
      setlength(aa,2);(2是数组个数)
      a1[1]:=4;
      a2[1]:=5;
      setLength(aa[0],length(a1));
      aa[0,0]:= a1[0];//负地址
      setlength(aa[1],length(a2));
      aa[1,0]:= a2[0];
      showmessage(inttostr(a1[1])+inttostr(a2[1]));
    end;
    这样就负了值了,你试试