在Delphi中使用TList时是否必须分配和释放记录?

前端之家收集整理的这篇文章主要介绍了在Delphi中使用TList时是否必须分配和释放记录?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题或多或少都说明了一切.鉴于以下记录结构:
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条目?我的直觉说代码应该是有效的,虽然我不确定是否有任何与记录初始化或完成相关的皱纹.

解决方法

你的代码很好.当您使用Tlist< T>时对于记录,它将它们视为值类型,以便复制.没有必要为它们分配指针.

猜你在找的Delphi相关文章