在Delphi中使用默认值初始化常量记录的未列出元素吗?

时间:2018-02-09 10:37:20

标签: delphi initialization constants record

让我们假设这些声明:

type
  TMyRec = record
    Name    : String;
    Age     : Integer;
    Married : Boolean;
  end;

  TMyRecArray = Array[0..3] of TMyRec;

const
  RecArray: TMyRecArray = ((Name: 'John' ; Age: 25; Married: False),
                           (Name: 'Wendy'; Age: 32                ),
                           (Name: 'Nick' ;          Married: True ),
                           (               Age: 19; Married: False));

最后三个数组行中未列出的记录元素是否使用默认值自动初始化?或者(可以)它们包含随机数据吗?

Embarcadero's docwiki没有就此发表任何正式声明。

1 个答案:

答案 0 :(得分:5)

具有默认值的记录数组常量声明可以声明为:

const
  RecArray: TMyRecArray = ((),
                           (),
                           (),
                           ());

所以是的,省略常量声明中的记录字段将产生默认值。

不幸的是,这种行为没有记录。您必须使用调试器进行验证。 Delphi的前身Turbo Pascal的工作方式几乎相同。您必须包括所有字段的值,直到最后一个非默认字段。