问题基本上已经说明了一切。给定以下记录结构:
type
TPerson = record
Name: string;
Age: Integer;
end;
PPerson = ^TPerson;
TPersonList = TList<TPerson>;
以下代码是否有效?
procedure ReadPeople(DataSet: TDataSet; PersonList: TPersonList);
begin
PersonList.Count := DataSet.RecordCount;
if DataSet.RecordCount = 0 then
Exit;
DataSet.First;
while not DataSet.Eof do begin
PersonList[DataSet.RecNo].Name := DataSet.FieldByName('Name').AsString;
PersonList[DataSet.RecNo].Age := DataSet.FieldByName('Age').AsInteger;
DataSet.Next;
end;
end;
我是否必须使用GetMem
/FreeMem
来分配和释放记录和TPersonList
实例,或者我可以直接访问TPersonList
条目?我的直觉告诉我代码应该有效,但我不确定与记录初始化或终止相关的任何问题。