传递数组的数组作为参数

问题描述 投票:0回答:1

我有这样一个数组:

12 |  18  |  22   |   26   |   28  |  32   | 34  | 36   |  50 
16           23                       33           37 

如您所见,它由两行组成,但有些只有一个元素,有些有两个。

我正在尝试编写一个以数组数组作为参数的函数。

我宣称自己是一种类型:

type array_of_array_of_Byte = array of array of Byte;

function my_function(value_list: array_of_array_of_Byte)

我这样调用该函数:

my_function([[12,16], [18], [22,23], [26], [28], [32,33], [34], [36,37], [50]]);

但是我收到错误:

需要序数类型

我做错了什么?我正在使用Delphi XE4。

arrays delphi delphi-xe4
1个回答
0
投票

不幸的是,XE4 中尚不支持从常量数组表达式初始化动态数组的功能,它是在 XE7 中添加的:

https://blog.marcocantu.com/blog/2014_september_dynamic_arrays_delphixe7.html

因此,就您而言,您别无选择,只能手动构建数组,例如:

type
  array_of_array_of_Byte = array of array of Byte;

procedure my_function(value_list: array_of_array_of_Byte);

var
  arr: array_of_array_of_Byte;
begin
  SetLength(arr, 9);

  SetLength(arr[0], 2);
  arr[0][0] := 12;
  arr[0][1] := 16;

  SetLength(arr[1], 1);
  arr[1][0] := 18;

  // and so on ...

  my_function(arr);
end
© www.soinside.com 2019 - 2024. All rights reserved.