如何设置默认值以在delphi中记录

Ank*_*ush 2 delphi default record delphi-xe7

我正在使用RAD XE7.在我的Delphi应用程序中,我想为Records字段设置默认值.

我尝试了下面的代码,但它没有编译,我知道这是错误的.我还有别的办法吗?

 TDtcData = record
    TableFormat     : TExtTableFormat = fmNoExtendedData;
    DTC             : integer = 0;
    Description     : string = 'Dummy';
    Status          : TDtcStatus;    
    OccurenceCnt    : integer =20;
    FirstDTCSnapShot: integer;
    LastDTCSnapShot: integer;
  end; 
Run Code Online (Sandbox Code Playgroud)

LU *_* RD 6

如果要定义部分初始化的记录,只需声明一个常量记录,但省略那些不需要默认值的参数:

Type
  TDtcData = record
  TableFormat     : TExtTableFormat;
  DTC             : integer;
  Description     : string;
  Status          : TDtcStatus;
  OccurenceCnt    : integer;
  FirstDTCSnapShot: integer;
  LastDTCSnapShot: integer;
end;

Const
  cDefaultDtcData : TDtcData = 
    (TableFormat : fmNoExtendedData; 
     DTC : 0; 
     Description : 'Dummy'; 
     OccurenceCnt : 20);

var
  someDtcData : TDtcData;
begin
  ...
  someDtcData := cDefaultDtcData;
  ...
end;
Run Code Online (Sandbox Code Playgroud)

  • @Ankush,额外的规范与问题无关.没有什么可以阻止你制作一个包含指向一个或多个默认记录的指针的列表. (3认同)
  • 指针的工作方式类似:`var myP:PDtcData; 开始新的(myP); myP ^:= cDefaultDtcData; etc ...`,其中`type PDtcData = ^ TDtcData; TDtcData =记录......等等 (2认同)

nil*_*nil 5

通过在 Delphi 中添加“ class like ”记录类型,您可以使用类函数来解决这个问题。

定义class function CreateNew: TDtcData; static;供您记录。

该实现为结果记录设置默认值:

class function TDtcData.CreateNew: TDtcData;
begin
 Result.TableFormat := fmNoExtendedData;
 Result.DTC := 0;
 Result.Description :=  'Dummy';
 Result.OccurenceCnt := 20;
end;
Run Code Online (Sandbox Code Playgroud)

使用它来获取具有默认值的记录,如下所示:

var
  AData: TDtcData;
begin
  AData := TDtcData.CreateNew;;
end.
Run Code Online (Sandbox Code Playgroud)