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

delphi – 关于加入TObjectlists

发布时间:2020-12-15 04:17:28 所属栏目:大数据 来源:网络整理
导读:我想我需要在正确的方向上轻推: 我有两个相同数据类型的Tobjectlists,我想将这些连接到一个新列表中,list1将被复制(未修改),然后是list2(反向) type TMyListType = TobjectListMyClassvar list1,list2,resList : TMyListtypebegin FillListWithObjects(list
我想我需要在正确的方向上轻推:

我有两个相同数据类型的Tobjectlists,我想将这些连接到一个新列表中,list1将被复制(未修改),然后是list2(反向)

type
  TMyListType = TobjectList<MyClass>

var
  list1,list2,resList : TMyListtype

begin
  FillListWithObjects(list1);
  FillListWithOtherObjects(list2);

  list2.reverse

  //Now,I tried to use resList.Assign(list1,laOr),//but Tobjectlist has no Assign-Method. I would rather not want to 
  //iterate over all objects in my lists to fill the resList
end;

delphi是否有任何内置函数将两个Tobjectlists合并为一个?

解决方法

使用TObjectList.AddRange()并将OwnsObjects设置为False以避免LRes中项目的双重释放.
var
  L1,L2,LRes: TObjectList<TPerson>;
  Item: TPerson;

{...}

L1 := TObjectList<TPerson>.Create();
try
  L2 := TObjectList<TPerson>.Create();
  try

    LRes := TObjectList<TPerson>.Create();
    try
      L1.Add(TPerson.Create('aa','AA'));
      L1.Add(TPerson.Create('bb','BB'));

      L2.Add(TPerson.Create('xx','XX'));
      L2.Add(TPerson.Create('yy','YY'));

      L2.Reverse;

      LRes.OwnsObjects := False;
      LRes.AddRange(L1);
      LRes.AddRange(L2);

      for Item in LRes do
      begin
        OutputWriteLine(Item.FirstName + ' ' + Item.LastName);
      end;

    finally
      LRes.Free;
    end;

  finally
    L2.Free;
  end;

finally
  L1.Free;
end;

(编辑:李大同)

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

    推荐文章
      热点阅读