【问题标题】:delphi defining a const multidimensional arrays with mixed static and dynamic elementsdelphi 定义具有混合静态和动态元素的 const 多维数组
【发布时间】:2019-08-29 11:10:00
【问题描述】:

是否可以在创建多维数组时混合使用静态和动态数组,然后使用它来定义该类型的 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 >']
        ]
      ];

【问题讨论】:

    标签: delphi pascal


    【解决方案1】:

    您需要在最外层使用普通括号 (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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2013-02-24
      相关资源
      最近更新 更多