You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:55:10