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

时间:2017-10-16 06:06:00

标签: 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; 

2 个答案:

答案 0 :(得分:6)

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

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;

答案 1 :(得分:3)

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

为您的记录定义class function CreateNew: TDtcData; static;

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

class function TDtcData.CreateNew: TDtcData;
begin
 Result.TableFormat := fmNoExtendedData;
 Result.DTC := 0;
 Result.Description :=  'Dummy';
 Result.OccurenceCnt := 20;
end;

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

var
  AData: TDtcData;
begin
  AData := TDtcData.CreateNew;;
end.