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

时间:2011-11-21 11:56:30

标签: 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;

一旦我尝试编译上面的代码,我得到E2029')'预期但是','找到了

4 个答案:

答案 0 :(得分:12)

您没有提到您正在使用的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;

答案 1 :(得分:11)

典型用法如下:

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局部变量中。我把它设为大写,在声明常量时有点常用(但不是强制性的 - 这只是个人品味)。

如果你希望你的代码更通用和可重用(如果你想成为一个懒惰的程序员,恕我直言)你可以依赖动态数组和/或array of const参数(如果您的数组以索引0开头)。

答案 2 :(得分:3)

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

答案 3 :(得分: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;
祝你好运。