arrays - 在 Delphi 中声明可变长度数组

标签 arrays delphi delphi-xe2 procedure declare

<分区>

我在 Delphi 中有一个程序,目前看起来是这样的:

Procedure Time.TimeDB(algorithm: string; Encode, Decode: InputFunction; N, R: Int);
VAR
    i : LongInt;
    Errors : Array[N] of LongInt;
BEGIN

for i := 0 to N-1 do
  Errors[i] := 0;

END;

我得到一个错误,即传递给错误定义的 N 是一个未声明的标识符,尽管它已在过程定义中声明。但是,N 在 BEGIN-END 部分中被识别。知道是什么原因造成的吗?我如何才能在 VAR 部分声明一个可变长度数组?

最佳答案

您编写 Int 数组 来声明一个 dynamic array Int 的数量:

procedure Time.TimeDB(algorithm: string; Encode, Decode: InputFunction; N, R: Int);
var
  i: int;
  errors: array of Int;
begin

  SetLength(errors, N);
  for i := 0 to N - 1 do
    Errors[i] := 0;

end;

另请注意,如果数组有 N 个元素,则它们的索引为 01、...、N - 1。没有索引为 N 的元素。

(另外,你确定你写的 Int 不是指 integer 吗?)


构造 array[M..N] of Int 称为 static array .在这种情况下,MN 必须是常量,例如 array[0..15] of TColor。您还获得了静态数组声明 array[TMyType] of TMySecondType,其中索引的类型为 TMyType,如 array[byte] of TColor > 或 array[TFontStyle] of cardinal

关于arrays - 在 Delphi 中声明可变长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150226/

相关文章:

c - 如何检查数组中的特定值

Javascript - 使用数组作为函数的参数并在创建新原型(prototype)对象时更改值

delphi - GMLib 简单方向示例

delphi - 通过 LiveBindings 同步 TMediaPlayer.Position 和 TrackBar.Position

javascript - 可以绑定(bind) $scope 但无法访问数组,除非添加 Alert()

c - 指向字符串的指针数组

delphi - 这个符号是什么意思: ∧?

delphi - FDQuery 导致内存不足异常

delphi - 为什么两个看似相同的动态数组类型被视为赋值不兼容?

delphi - 如何将TDictionary作为可选参数传递?