比较后从TStringList中删除多个项目

时间:2015-10-26 19:00:06

标签: delphi delphi-xe

任何人都可以帮助比较两个stringlist并从中获得差异的最佳方法是什么?

例如,如果我有AList和BList之类的

ALIST

  • ABC
  • CDE
  • EFG
  • KLM
  • STA
  • LMO
  • TKJ

BList

  • ABC
  • CDE
  • EFG
  • KLM
  • STA
  • LMO
  • TKJ
  • FGJ
  • FGJ
  • ARE
  • IJE

如果我将它们比作

     for i := 0 to BList.count-1 do
       if AList.indexof(BList[i]) < 0 then
         ResultList.Add(BList[i]);

结果是:

  • FGJ
  • FGJ
  • ARE
  • IJE

我只需要一次元素。我怎样才能避免多件物品?有没有比制作从List中删除多个项目的过程更好的解决方案?对不起我的英文,谢谢你的帮助!

1 个答案:

答案 0 :(得分:8)

TStringList有一个属性Duplicates,用于控制尝试将重复项添加到已排序列表时应该发生的情况。

来自文档:

  

dupIgnore 忽略尝试将重复的字符串添加到列表中。

     

dupError 在尝试时引发EStringListError异常   将重复的字符串添加到已排序的列表中。

     

dupAccept 允许排序列表中的重复字符串。

所以,设置

  ResultList.Sorted := True;
  ResultList.Duplicates := dupIgnore;
相关问题