4

プロシージャに「任意の」レコード タイプを渡すことはできますか?

文字列で「レコード」を何度も使用しました。

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;

いつも情報ありがとうございます!

4

1 に答える 1

11

過度に複雑にしないでください。レコードをクリアするために 2 行で書きたくない場合は、次のように宣言することを検討してください。

Const TR_Empty: TR = ();

そしてそれを使用します:

R := TR_Empty;

他の人がコメントしているように、これを行うための一般的な手順は努力する価値がありません。

Delphi-2009 以降をお持ちの場合は、次のコードでレコードをクリアできます。

R := Default(TR);
于 2012-09-10T14:45:56.340 に答える