加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:10:39 所属栏目:大数据 来源:网络整理
导读:问题或多或少都说明了一切.鉴于以下记录结构: type TPerson = record Name: string; Age: Integer; end; PPerson = ^TPerson; TPersonList = TListTPerson; 以下代码是否有效? procedure ReadPeople(DataSet: TDataSet; PersonList: TPersonList);begin Pe
问题或多或少都说明了一切.鉴于以下记录结构:
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>时对于记录,它将它们视为值类型,以便复制.没有必要为它们分配指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读