如何初始化声明为局部变量的记录?

时间:2010-08-13 14:18:23

标签: delphi

我在类的方法中使用由字符串,布尔值,整数,货币和其他记录数组组成的记录。我想以递归方式初始化基本类型的所有字段为空/假/零。默认情况下,Delphi似乎不这样做。是否有一种直接的方法来实现这一点,不涉及通过名称访问每个字段并手动设置它?

3 个答案:

答案 0 :(得分:11)

您可以使用以下构造中的一个(其中Foo是记录)。

FillChar(Foo, SizeOf(Foo), 0); 

ZeroMemory(@Foo, SizeOf(Foo));

来自Allen Bauer

的帖子
  

着眼于最常见的用途   为FillChar确定   大多数人是否使用FillChar   实际上用字符填充内存   数据或只是用它来初始化   有一些给定字节值的内存,我们   发现是后一种情况   主导它的使用而不是   前任的。有了这个,我们决定继续   FillChar以字节为中心。

答案 1 :(得分:2)

答案 2 :(得分:1)

好吧,您可以应用一个简单的法律把戏

unit unit1;

interface

type
  PMyRecord = ^TMyRecord;
  TMyRecord = record
    Value: Integer;
    function Self: PMyRecord;
  end;

implementation

function TMyRecord.Self: PMyRecord;
begin
  Result := @Self;
end;

procedure Test(AValue: Integer);
const MyRecord: TMyRecord = (Value: 0);
begin
  MyRecord.Self.Value := AValue;
end;