var
  UseA: array of Integer;
begin
  SetLength(UseA, 2);
  UseA[0] := 1;
end;

解决方案 »

  1.   

    to C_Sharp:
    可以解释一下吗?另外,如果有多个数据呢?一定要从0开始吗?
      

  2.   

    使用动态数组前,一定要设定数组的大小。如:SetLength(yourArray,100);然后就可以使用了。记得要给分呀...哈...
      

  3.   

    setlengt是基本函数,基本上哪个版本的delphi都有!
    你还可以声明控件数组!
    var ButtonArray:Array of TButton;
    具体可看我的程序:
    http://www.csdn.net/expert/topic/221/221090.shtm
      

  4.   

    上面各位说得很对,我还用过二维动态数组 a: array of array of TButton
    不过别忘了都要setlength,例如
    setlength(a,3);
    setlength(a[0],2);
    setlength(a[1],4);
    setlength(a[2],3);
    每一维都可以不同长短,不一定非要矩阵排列
      

  5.   

    要从0开始。如你定义sellength(array,2)
    使用时array[0],array[1];
      

  6.   

    动态数组从Delphi4就引入了,他总是零基准的(必须以零开始),还可以定义多维的动态数组:
    var
       IA : array of array of Integer ;
       SetLength(IA,5,5);// 5*5 的整形数组
      

  7.   

    to ch81:
    还没有setlength就可以直接赋值给1了,难道动态数组的默认长度为2?
      

  8.   

    不可能的。必须setlength,你申明得只是一个指针。实际上内存空间还没开辟。
    setlength就是开辟区域的。开辟之后才能用。动态数组没有默认长度这一说。
    我怕我理解不透,实践了一下:
    var i:array of integer;
    begin
            i[1]:=3;
    end;
    错误:Access Violation .......
    但动态数组的下标都是从0开始。
      

  9.   

    to ch81:
    我在d6中试了,直接赋值给1是合法的(没有setlength),不会出现错误。
      

  10.   

    “我在d6中试了,直接赋值给1是合法的(没有setlength),不会出现错误。” 那是你运气好,刚好那个a[1]的地址还是在程序可以访问的地址上,所以可以访问
      

  11.   

    同意trainbox()的看法,当你没开辟空间时,它的指针指向的地方是不定的。
    你没出错,只能说碰巧。但这样操作是绝对不允许的。