delphi中整数的Init数组

delphi中整数的Init数组,delphi,Delphi,如何初始化一个数组,如 TMyArray = array[1..2, 1..3] of Integer; 我试过了 MyArray : TMyArray; MyArray = ( (1,2,3), (3,4,5) ); 但是这种样式没有任何运气…您可以初始化类型化常量作为其声明的一部分: const MyArrayConst: TMyArray = ( (1, 2, 3), (3, 4, 5) ); 也可以用这种方式初始化全局变量 但不能以这种方式初

如何初始化一个数组,如

TMyArray = array[1..2, 1..3] of Integer;
我试过了

 MyArray  :  TMyArray;

 MyArray = ( (1,2,3),  (3,4,5) );

但是这种样式没有任何运气…

您可以初始化类型化常量作为其声明的一部分:

const
  MyArrayConst: TMyArray = (
     (1, 2, 3),
     (3, 4, 5)
  );
也可以用这种方式初始化全局变量

但不能以这种方式初始化局部变量。您可以声明常量,然后将其分配给变量

var
  MyArray: TMyArray;
....
MyArray := MyArrayConst;

如果您可以使用动态数组,那么您可以使用如下代码

type
  TDynIntArray = array of Integer;
  T2DIntArray  = array of TDynIntArray;

var tmp: T2DIntArray;
begin
  tmp := T2DIntArray.Create(
                 TDynIntArray.Create(1,2,3),
                 TDynIntArray.Create(4,5,6)
          );

如果您使用了
TArray
,那么您就不需要定义类型,也不会强迫其他想要与您的代码交互的人使用相同的类型。泛型的一个副产品是它有更宽松的类型兼容性规则,可以绕过过于繁琐的老式pascal规则。@DavidHeffernan“过于繁琐的老式pascal规则”-我现在有一个新的最喜欢的短语::-)@alcalde TArray看起来很小,但它是语言中最重要的新特性之一。Delphi的哪个版本?它有什么区别,@Bruce?根据版本,有很多不同的答案吗?这些答案是否太长、太复杂,以至于一个单一的答案不能写成一个简单的案例陈述:“对于版本a和更早的版本,做X;如果你有版本B到C,那么做Y;对于版本D和更高版本,那么做Z”?@Rob:更新的版本有更多的选择。例如,下面David的建议仅适用于Delphi 2009(?)及以上版本。我们使用的是静态数组,此解决方案非常有效,谢谢