我在类的方法中使用由字符串,布尔值,整数,货币和其他记录数组组成的记录。我想以递归方式初始化基本类型的所有字段为空/假/零。默认情况下,Delphi似乎不这样做。是否有一种直接的方法来实现这一点,不涉及通过名称访问每个字段并手动设置它?
答案 0 :(得分:11)
您可以使用以下构造中的一个(其中Foo是记录)。
FillChar(Foo, SizeOf(Foo), 0);
ZeroMemory(@Foo, SizeOf(Foo));
的帖子
着眼于最常见的用途 为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;