我需要声明一个具有用户定义维度的数组。这个数组在一个非常大的程序中,更改为列表可能是一个很大的问题。
现在我的数组声明如下:
Buffer: array[0..myCostant * 2] of Byte;
和myCostant
就像它说的那样,是一个已定义的常量。
现在我需要使用一个变量,得到这样的东西:
Buffer: array[0..myVar * 2] of Byte;
但我不能在数组定义中使用变量。
如何在不更改其他内容的情况下解决这个问题? 这个变量是上限的,所以我能用这个max size声明数组并用另一条指令减少它吗?
答案 0 :(得分:10)
您应该使用dynamic arrays:
var
Buffer: array of Byte;
begin
SetLength(Buffer, myVar*2 + 1);
或者,您可以使用已知上限长度的静态数组,并在变量中记录数组的当前“有意义”长度,例如CurrentLength
。
然后你可以替换,例如
for i := 0 to Length(Buffer) - 1 do
SomethingWith(Buffer[i]);
通过
for i := 0 to CurrentLength - 1 do
SomethingWith(Buffer[i]);