代码之家  ›  专栏  ›  技术社区  ›  Kenneth Cochran

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

  •  9
  • Kenneth Cochran  · 技术社区  · 14 年前

    我在一个类的方法中使用由字符串、布尔、整数、货币和其他记录数组组成的记录。我想递归地将原语类型的所有字段初始化为空/假/零。默认情况下,Delphi似乎不会这样做。有没有一个简单的方法来完成这一点,不涉及访问每个字段的名称和设置它手动?

    2 回复  |  直到 14 年前
        1
  •  13
  •   Community CDub    7 年前

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

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

    Allen Bauer

    同时看看最常见的用途 是否大多数人使用FillChar 实际上用字符填充记忆 或者只是用它来初始化 发现是后一种情况 主导了它的使用而不是 前者。于是我们决定 以字节为中心的FillChar。

        3
  •  1
  •   Alex    4 年前

    好吧,你可以用一个简单的法律手段

    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;