Внешний вид сайта:

Удаление повторных элементов из TStringList

Невизуальный компонент Delphi, класс TStringList хранит и управляет набором строк. Каждая строка может ассоциироваться с объектом. TStringList получен из основного класса для хранения строк — TStrings. Много управлений Delphi, типа TListBox, TComboBox и TMemo, например, имеют свойство, которое имеет тип TStrings: Items для TListBox, Lines для Memo.

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

Комментарии

Нет комментариев. Ваш будет первым!