这个问题或多或少说明了一切。给定以下记录结构:
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
条目?我的直觉说代码应该是有效的,但我不确定是否存在与记录初始化或终结相关的任何问题。