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)
如果要定义部分初始化的记录,只需声明一个常量记录,但省略那些不需要默认值的参数:
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)
通过在 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)
| 归档时间: |
|
| 查看次数: |
3740 次 |
| 最近记录: |