Delphi XE4传递数组数组参数报错“Ordinal type required”如何解决?
Delphi XE4动态数组参数错误解决
错误原因
你遇到的「Ordinal type required」错误,核心原因是Delphi XE4不支持直接使用嵌套的动态数组字面量(如[[12,16], [18], ...])作为函数参数。这种简洁的嵌套数组初始化语法是在Delphi XE7及更高版本才引入的,XE4尚未支持该特性。
另外,你的函数定义存在语法问题:Delphi要求所有function必须声明返回类型,如果不需要返回值,应使用procedure替代function。
修复方案
步骤1:修正函数/过程定义
如果不需要返回值,将function改为procedure并补全语法:
type array_of_array_of_Byte = array of array of Byte; procedure my_function(value_list: array_of_array_of_Byte); begin // 函数逻辑代码 end;
步骤2:手动初始化动态数组
在XE4中,需要先创建动态数组变量并逐个初始化内层元素,再传递给过程:
var InputArray: array_of_array_of_Byte; begin // 设置外层数组的元素数量 SetLength(InputArray, 9); // 逐个初始化内层数组 SetLength(InputArray[0], 2); InputArray[0][0] := 12; InputArray[0][1] := 16; SetLength(InputArray[1], 1); InputArray[1][0] := 18; SetLength(InputArray[2], 2); InputArray[2][0] := 22; InputArray[2][1] := 23; SetLength(InputArray[3], 1); InputArray[3][0] := 26; SetLength(InputArray[4], 1); InputArray[4][0] := 28; SetLength(InputArray[5], 2); InputArray[5][0] := 32; InputArray[5][1] := 33; SetLength(InputArray[6], 1); InputArray[6][0] := 34; SetLength(InputArray[7], 2); InputArray[7][0] := 36; InputArray[7][1] := 37; SetLength(InputArray[8], 1); InputArray[8][0] := 50; // 调用过程 my_function(InputArray); end;
内容的提问来源于stack exchange,提问作者Pele
相关产品推荐
相关产品推荐

