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

Boz*_*zzy 4 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));
Run Code Online (Sandbox Code Playgroud)

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

Embarcadero的docwiki没有就此发表任何官方消息.

LU *_* RD 5

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

const
  RecArray: TMyRecArray = ((),
                           (),
                           (),
                           ());
Run Code Online (Sandbox Code Playgroud)

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


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

  • 那是对的.您需要查看写入可执行文件的数据以表示常量.在调试器下检查它. (2认同)