Delphi 如何为整个整数数组赋值?

Delphi 如何为整个整数数组赋值?,delphi,Delphi,我知道我能做到: const arrayOfIntegers : Array[1..15] of Integer = (3,2,8,10,1,6,2,13,13,3,13,13,13,3,45); 但是,我怎样才能做到以下几点呢 var arrayOfIntegers : Array[1..15] of Integer; begin arrayOfIntegers := (3,2,8,10,1,6,2,13,13,3,13,13,13,3,45); end; 当我试图编译上面的代

我知道我能做到:

const
  arrayOfIntegers : Array[1..15] of Integer = (3,2,8,10,1,6,2,13,13,3,13,13,13,3,45);
但是,我怎样才能做到以下几点呢

var
  arrayOfIntegers : Array[1..15] of Integer;
begin
  arrayOfIntegers := (3,2,8,10,1,6,2,13,13,3,13,13,13,3,45);
end;

当我试图编译上面的代码时,我得到了E2029’’预期的,但是’’找到的

const部分中使用的语法仅对类型化数组常量有效。您不能将其用作赋值中的文字数组常量。

您没有提到您正在使用的Delphi版本,但在现代Delphi中,您可以执行以下操作:

var
  arrayOfIntegers : TArray<Integer>;
begin
  arrayOfIntegers := TArray<Integer>.Create(3,2,8,10,1,6,2,13,13,3,13,13,13,3,45);
end;
var
阵列天线:柏油树;
开始
ArrayFintegers:=TArray.Create(3,2,8,10,1,6,2,13,13,3,13,13,3,45);
结束;

典型的用途如下:

type
  TIntegerArray1to15 = Array[1..15] of Integer;
const
  INIT_INT_1_15_ARRAY: TIntegerArray1to15 = (3,2,8,10,1,6,2,13,13,3,13,13,13,3,45);

var
  arrayOfIntegers : TIntegerArray1to15;
begin
  arrayOfIntegers := INIT_INT_1_15_ARRAY;
  .... use and update arrayOfIntegers[]
end;
在这种情况下,您应该更好地定义自己的类型(代码不会变慢或变大,并且您可以在这种类型的实例之间进行赋值)。您将确保数组边界符合预期(1..15)

const
语句将被编译为一个“引用”数组,该数组将被复制到
arrayOfIntegers
局部变量中。我把它改为大写,这在声明常量时是一种比较常见的用法(但不是强制性的,这只是个人的爱好)


如果你想让你的代码更加通用和可重用(如果你想成为一个懒惰的程序员,这是很有意义的),你可以依赖动态数组和/或常量的
数组
参数(如果你的数组以索引0开始)。

这是一个为整个整数数组赋值的例子

const
  C_ARR_COST : array ['a'..'e'] of string = ('01','02','03');
var Conter:Char;
begin
  //Loop
  for Conter := Low(C_ARR_COST) to high(C_ARR_COST) do
    ShowMessage(C_ARR_COST[Conter]);

  //Direct
  ShowMessage(C_ARR_COST['a']);
end;

祝你好运。

如果你使用动态数组,你可以使用dyn数组构造函数。在这里,您可以声明一个常量,然后将其分配给您的变量。除了David的“const and assign”方法外,您还必须声明一个新类型,并将其用于数组const和var,以实现此目的。将两者声明为整数的数组[1..15]将导致“不兼容类型”错误。请注意,这将是一个基于0的数组,而不是原来基于1的数组。是的,将是。这就是为什么在循环数组时最好使用Low()和High(),以避免此问题。@Lina您可以使用
来解决i:=Low(arrayOfIntegers)到High(arrayOfIntegers)do
-我甚至不确定它是否会编译。我想你应该更好,在Delphi的现代版本中,在ArrayFinteger中使用
作为aInteger,那么
ArrayFinteger是否应该在使用后释放?如果是的话,你可以考虑改变你的代码,不要误导别人。我通常不使用这种语法(因为我希望我的代码在大多数Delphi版本中编译,包括FPC)。这就是为什么我的评论是以问题而不是断言的形式出现的。让我担心的是,动态数组或
TArray
是基于0的,与整数的
数组[1..15]不同。普通静态数组仍然存在,并有其意义!在所有情况下,我很高兴学到了一些东西,谢谢大家。