我查找Delphi的关于数组的定义,都是静态数组:const Digits: array[0..9] of Char = '0123456789';type TCube = array[0..1, 0..1, 0..1] of Integer;const Maze: TCube = (((0, 1), (2, 3)), ((4, 5), (6,7)));
如果,我要定义不定长度数组,怎么定义啊?

解决方案 »

  1.   

    var abc :array of integer;         setlength(abc,x);
      

  2.   

    同意楼上. abc 为动态数组.
    setlength 动态设置数组长度
      

  3.   

    谢谢 drift1981 和 wilowind。但如果我希望他是多维的我该如何做?
      

  4.   

    var abc :array of array of integer;         setlength(abc,x,y);
    var abc :array of array of array of integer;         setlength(abc,x,y,z);
      

  5.   

    谢谢,Delphi真是好东西。我查看了一下资料,说到可以通过
    length(f)
    得到动态数组 f 的长度。这样可以枚举他的每一个元素。
    for i:=0 to length(f)-1 do
       begin
      //....
       end;
    但是没有谈到如何取得多维数组的某一维的长度,我这样用对吗?: length(f,0) 得到第0维的长度。
      

  6.   

    可以这样吗?var
       a: array of array of string;
       i: integer;
    begin
       SetLength(f,9);
       for i:=0 to length(f)-1 do
       begin
       //....
         SetLength(a[i], i);
       end;
      

  7.   

    纠正:
    可以这样吗?var
       a: array of array of string;
       i: integer;
    begin
       SetLength(a,9);
       for i:=0 to length(a)-1 do
       begin
       //....
         SetLength(a[i], i);
       end;
      

  8.   

    我怎么没发现这个可以这么用
    Length(string)里面可以用数组的么Low(数组)上标
    High数组)下标
      

  9.   

    不错哦,length真的可以用于数组哦
    而且我测试了下可用性不错
    下面程序加入memo1和button1两个控件,测试结果让人满意procedure TForm1.Button1Click(Sender: TObject);
    var
       a: array of array of byte;
       i,x: integer;
    begin
       SetLength(a,9);
       x:=20;
       for i:=0 to length(a)-1 do
       begin
       //....
         if i<>4 then
         SetLength(a[i], i)
         else
         SetLength(a[i], x)   end;
       a[4,19]:=100;
       for i:=0 to length(a)-1 do
        begin
          memo1.Lines.Add(inttostr(length(a[i])));    end;
        memo1.Lines.Add(inttostr(a[4,19]));
    end;
      

  10.   

    刚才看了delphi帮助length(s)这个s是ansistring 和dynamicArray
    In Delphi code, Length returns the number of characters actually used in the string or the number of elements in the array. In C++ code, use the method of the same name on the AnsiString or DynamicArray class.
      

  11.   

    很好,
    更进一步。在自动化类型里的数组是用SafeArray来表示的。Delphi的这种动态数组到SafeArray的转换该怎么做?
    我查阅了Delphi的文档,string 只要直接赋值到 Variant,他会帮助转换到 BSTR。
    文档的示例:
    var
      V1, V2, V3, V4, V5: Variant;
      I: Integer;
      D: Double;
      S: string;
    begin
      V1 := 1; { integer value }
      V2 := 1234.5678; { real value }
      V3 := 'Hello world!'; { string value }
      V4 := '1000'; { string value }
      V5 := V1 + V2 + V4; { real value 2235.5678}
      I := V1; { I = 1 (integer value) }
      D := V2; { D = 1234.5678 (real value) }
      S := V3; { S = 'Hello world!' (string value) }
      I := V4; { I = 1000 (integer value) }
      S := V5; { S = '2235.5678' (string value) }
    end;
    数组呢?也一样?
      

  12.   

    function ccc(a: array of array of string) : array of array of string;   
    出错了。悲惨啊,不能用数组做参数?
    那如果我要传递一个数组怎么办,各位大哥,救救我吧。
      

  13.   

    原来并不是数组不能做参数。function ccc(a: array of string) : string;就能编译通过。