如何完成通过函数的无类型参数传递的记录?

时间:2012-09-10 14:25:27

标签: delphi record clear delphi-6 finalize

我可以将“任意”记录类型传递给我的程序吗?

我多次使用带有字符串的“记录”。

type 
  TR = record
    a: string;
    b: string;
  end;

要清除它们,我需要写一下:

Finalize(R);
FillChar(R, SizeOf(R), #0);

问题是如何通过任何类型的记录来清除它?

为此,我得到了这样的提示:“表达式不需要初始化/完成”。

procedure ClearRecord(var R);
begin
  Finalize(R);
  FillChar(R, SizeOf(R), #0);
end;

感谢您的每一个信息!

1 个答案:

答案 0 :(得分:11)

不要让它过于复杂。如果您不想写两行来清除记录,请考虑声明:

Const TR_Empty: TR = ();

并使用它:

R := TR_Empty;

正如其他人评论的那样,这样做的通用程序是不值得的。

如果您有Delphi-2009或更新版本,此代码可用于清除记录:

R := Default(TR);