提问人:Issam 提问时间:11/11/2023 最后编辑:Ken WhiteIssam 更新时间:11/12/2023 访问量:127
初始化记录数组时常量表达式预期错误
Constant Expression Expected Error when Initializing Array of Records
问:
我在尝试在Delphi中初始化一个常量记录数组时遇到了一个问题。这是我的代码的简化版本:
TParameterList = record
Parm_Name: string;
Parm_Unit: string;
IsRequired: Boolean;
Default_Value: String;
ParmV: Integer;
Value_Options: TArray<String>;
end;
const
IP_Options: TArray<String> =['Option 1','Option 2','Option 3'];
const
Cables_Parms: array[0..4] of TParameterList = (
(Parm_Name: 'Insulation'; Parm_Unit: 'N/A'; IsRequired: True; Value_Options: IP_Options),
// Other entries...
);
但是,我遇到了错误
预期的常量表达式
特别是在我尝试用 .我将不胜感激任何关于可能导致此问题的原因以及我如何解决它的任何见解。Value_Options
IP_Options
答:
2赞
Andreas Rejbrand
11/12/2023
#1
动态数组常量不能在常量表达式中使用:
type
TTest = record
a: Integer;
b: TArray<Integer>;
end;
const
Arr: TArray<Integer> = [1, 2, 3];
Test: TTest = (a: 394; b: Arr); // [dcc32 Error] E2026 Constant expression expected
但是,您可以在此类上下文中使用动态数组文本:
type
TTest = record
a: Integer;
b: TArray<Integer>;
end;
const
Test: TTest = (a: 394; b: [1, 2, 3]); // compiles
显然,这并不完全是你想要的,但它可能已经足够好了。
评论
type TTest = record a: Integer; b: TArray<Integer>; end;
const T: TTest = (a: 1; b: [1, 2, 3]);
(Parm_Name: 'Insulation'; Parm_Unit: 'N/A'; IsRequired: True; Value_Options: ['Option 1','Option 2','Option 3'])