delphi - delphi 定义具有混合静态和动态元素的 const 多维数组
问题描述
在创建多维数组时是否可以混合静态和动态数组,然后使用它来定义该类型的 const。编译器似乎没有以下问题,所以我认为像这样混合动态和静态数组是合法的......
TSoftKeyBase = (skEmptyCommandLine, skChannelsSelected);
TSoftKeySet = array of array of String;
TSoftKeys = array[TSoftKeyBase] of TSoftKeySet;
当我尝试为这个数组定义一个常量时,我不断在元素的内部列表中获得“需要序数类型”。我是否超出了语言的范围?
const
SOFT_KEYS: TSoftKeys =
[
[
['Select Previous', 'Page', 'Close', 'SC', 'Park', 'MORE >'],
['Output', 'FX', 'Macro', 'Select Active', 'Select Changed', 'MORE >'],
['Cue List', 'Re Cue List', 'Load', 'Inclusive Mode', 'Active Sel Mode', 'MORE >'],
['If', 'View', 'Scroll To', '', '', 'MORE >']
],
[
['Select Previous', 'Last', 'Next', 'Clear Selection','Park', 'MORE >'],
['Down %', 'Up %', 'Home', 'Select Active', 'Select Changed', 'MORE >'],
['Virtual DSC', 'HiLight', 'LoLight', 'Fan', 'Offset', 'MORE >'],
['', '', '', '', '@ ATTs', 'MORE >']
]
];
解决方案
您需要在最外层 ( array[TSoftKeyBase]
) 使用普通括号,因为它是静态数组(而不是动态数组或集合)。
const
SOFT_KEYS: TSoftKeys =
(
[
['Select Previous', 'Page', 'Close', 'SC', 'Park', 'MORE >'],
['Output', 'FX', 'Macro', 'Select Active', 'Select Changed', 'MORE >'],
['Cue List', 'Re Cue List', 'Load', 'Inclusive Mode', 'Active Sel Mode', 'MORE >'],
['If', 'View', 'Scroll To', '', '', 'MORE >']
],
[
['Select Previous', 'Last', 'Next', 'Clear Selection','Park', 'MORE >'],
['Down %', 'Up %', 'Home', 'Select Active', 'Select Changed', 'MORE >'],
['Virtual DSC', 'HiLight', 'LoLight', 'Fan', 'Offset', 'MORE >'],
['', '', '', '', '@ ATTs', 'MORE >']
]
);
更简单的例子:
type
TTest = array[0..2] of Integer; // static array
const
Data: TTest = (10, 20, 30);
和
type
TTest = array of Integer; // dynamic array
const
Data: TTest = [10, 20, 30];
和
type
TTest = set of Byte; // set
const
Data: TTest = [10, 20, 30];
推荐阅读
- firebase - Flutter web无法从firestore获取数据
- android - 使用导航组件在任何目的地弹出常见错误对话框的最佳实践
- flutter - 成员 'notifyListeners' 只能在 'package:flutter/src/foundation/change_notifier.dart' 或测试中使用
- python - 如何对项目进行分组并将行放入包含分类数据的列中
- asynchronous - 处理需要时间的异步 api 调用的最佳实践是什么
- javascript - 有没有办法完美计算外矩形和内矩形之间的半径差?
- asp.net-core-mvc - 使用 .NET Core MVC 响应显示属性之一的 NULL 值
- javascript - 如何从 API 检查电子邮件是否已注册
- c# - ASP.NET Core + 身份服务器 + Angular over HTTP
- flutter - 在 Flutter 中嵌入 Native ,Platform-View - 将 Native 视图作为小部件返回到 Flutter