Удаление повторных элементов из 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 возвращает случайное число из указанного диапазона.
Комментарии