将数组长度设置为零将破坏数组,这与您“保持数组加载”的愿望背道而驰。但是,它将释放所有记录及其字符串的内存(对于当时引用计数为 1 的任何字符串)。
如果您只想为字符串释放内存,但保留分配的记录内存(因为您计划在之后立即分配另一组记录,并且您不希望浪费释放和重新分配相同的内存),那么您可以只清除字符串成员,但没有单个库调用可以为您执行此操作。相反,您需要自己编写一个循环并清除每条记录的字段。
for i := 0 to High(transactions) do begin
transactions[i].alias := '';
transactions[i].description := '';
end;
如果记录中有很多字段需要清除,那么TTransaction
为数组的每个元素分配一个默认值可能会更方便。您可以使用该Default
函数,或者在旧版本的 Delphi 中,您可以声明TTransaction
所有字段都已清除的 a:
const
ClearTransaction: TTransaction = (alias: ''; description: ''; creation: 0; count: 0);
for i := 0 to High(transactions) do
transactions[i] := ClearTransaction;
// or
transactions[i] := Default(TTransaction);