我正在使用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;
答案 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.