我知道我可以这样做:
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')'预期但是','找到了
答案 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;
祝你好运。