Удаление повторных элементов из TStringList
Удаление дубликатов из TStringList
Когда Вы заполняете список строк элементами, Вы могли бы ввести двойные строки (более одного элемента с тем же значением строки).
Чтобы удалить двойные значения из списка, используйте следующую процедуру:
//удаление двойных строк из списка строк procedure RemoveDuplicates(const stringList : TStringList) ; var buffer: TStringList; cnt: Integer; begin stringList.Sort; buffer := TStringList.Create; try buffer.Sorted := True; buffer.Duplicates := dupIgnore; buffer.BeginUpdate; for cnt := 0 to stringList.Count - 1 do buffer.Add(stringList[cnt]) ; buffer.EndUpdate; stringList.Assign(buffer) ; finally FreeandNil(buffer) ; end; end;
Вот пример использования:
var sl : TStringList; cnt : integer; begin Randomize; sl := TStringList.Create; try for cnt := 1 to 1000 do sl.Add(IntToStr(Random(2000))) ; ShowMessage('С дубликатами: ' + #13#10 + IntToStr(sl.Count)) ; RemoveDuplicates(sl) ; ShowMessage('Без дубликатов: ' + #13#10 + IntToStr(sl.Count)) ; finally sl.Free; end; end;
Примечание: Randomize инициализирует генератор случайных чисел; Random возвращает случайное число из указанного диапазона.
Комментарии