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

如何在Delphi中用字符串常量构建常量泛型字符串数组?

解决Delphi中用单独字符串常量构建数组常量的问题

你遇到的Constant expression expected错误,是因为TArray<String>属于动态数组类型,Delphi编译器不允许用已定义的字符串常量标识符来初始化动态数组常量——它要求数组初始化必须直接提供编译期可确定的字面量值,而非引用其他常量。

下面是两种可行的解决方案:

方案1:改用静态数组类型

将动态数组TArray<String>替换为静态数组类型,就能直接用已定义的字符串常量初始化数组:

const Test1: String = '''
  [
    {'Computer Webcam', TAlphaColors.Aliceblue},
    {'Computer Monitor', TAlphaColors.Blueviolet},
    {'Computer Mouse', TAlphaColors.Aqua},
    {'Computer Keyboard', TAlphaColors.Blue},
  ]
''';
const Test2: String = '''
  [
    {'External Harddrive', TAlphaColors.Brown},
    {'USB Hub', TAlphaColors.Chartreuse},
    {'Computer Mousepad', TAlphaColors.Crimson}
  ]
''';
const Test3: String = '''
  [
    {'Computer Mouse', TAlphaColors.Aqua},
    {'Computer Keyboard', TAlphaColors.Blue},
    {'External Harddrive', TAlphaColors.Brown},
  ]
''';
const AllTestJSON: array[0..2] of string = [Test1, Test2, Test3];

如果后续需要动态数组类型,Delphi支持静态数组到TArray<String>的隐式转换,直接赋值即可:

var DynArray: TArray<String>;
begin
  DynArray := AllTestJSON;
end;

方案2:利用编译期函数(Delphi 10.4+)

如果你的Delphi版本是10.4或更高,可以使用[Const]修饰的编译期函数来构建动态数组常量:

const
  Test1: String = '''
    [
      {'Computer Webcam', TAlphaColors.Aliceblue},
      {'Computer Monitor', TAlphaColors.Blueviolet},
      {'Computer Mouse', TAlphaColors.Aqua},
      {'Computer Keyboard', TAlphaColors.Blue},
    ]
  ''';
  Test2: String = '''
    [
      {'External Harddrive', TAlphaColors.Brown},
      {'USB Hub', TAlphaColors.Chartreuse},
      {'Computer Mousepad', TAlphaColors.Crimson}
    ]
  ''';
  Test3: String = '''
    [
      {'Computer Mouse', TAlphaColors.Aqua},
      {'Computer Keyboard', TAlphaColors.Blue},
      {'External Harddrive', TAlphaColors.Brown},
    ]
  ''';

[Const]
function GetAllTestJSON: TArray<String>;
begin
  Result := [Test1, Test2, Test3];
end;

// 编译期生成数组常量
const AllTestJSON = GetAllTestJSON;

这种方式会在编译阶段计算出数组结果,运行时直接使用即可。

内容的提问来源于stack exchange,提问作者Shaun Roselt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:34:53