我在尝试在 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
的行。如果您能了解可能导致此问题的原因以及如何解决它,我将不胜感激。
动态数组常量不能在常量表达式中使用:
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
显然,这并不完全是您想要的,但可能已经足够好了。