初始化记录数组时常量表达式预期错误

问题描述 投票:0回答:1

我在尝试在 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
的行。如果您能了解可能导致此问题的原因以及如何解决它,我将不胜感激。

arrays delphi constants record
1个回答
0
投票

动态数组常量不能在常量表达式中使用:

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

显然,这并不完全是您想要的,但可能已经足够好了。

© www.soinside.com 2019 - 2024. All rights reserved.