配列の長さをゼロに設定すると、配列が破棄されます。これは、「配列をロードしたままにする」という希望に反します。ただし、すべてのレコードとその文字列 (その時点で参照カウントが 1 であるすべての文字列) のメモリが解放されます。
文字列用にメモリを解放したいだけで、割り当てられたレコード メモリを保持する場合 (直後に別のレコード セットを割り当てる予定で、同じメモリを解放して再割り当てする無駄をしたくないため)、その後、文字列メンバーだけをクリアできますが、それを行う単一のライブラリ呼び出しはありません。代わりに、ループを作成し、各レコードのフィールドを自分でクリアする必要があります。
for i := 0 to High(transactions) do begin
transactions[i].alias := '';
transactions[i].description := '';
end;
クリアが必要なフィールドがレコード内に多数ある場合TTransaction
は、配列の各要素にデフォルト値を割り当てる方が便利な場合があります。関数を使用するか、Delphi の古いバージョンでは、すべてのフィールドがすでにクリアされている をDefault
宣言できます。TTransaction
const
ClearTransaction: TTransaction = (alias: ''; description: ''; creation: 0; count: 0);
for i := 0 to High(transactions) do
transactions[i] := ClearTransaction;
// or
transactions[i] := Default(TTransaction);