Карта сайтаСсылкиКонтакты

Хостинг


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

PDF Печать
Статьи

Невизуальный компонент 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;

Примечание: Randomoze инициализирует генератор случайных чисел; Random возвращает случайное число из указанного диапазона.


 

Комментарии   

 
0 #1 гуль 06.05.2011 09:20
:sad: я ничего не знаю по дельфи :cry:
Цитировать
 
 
0 #2 Rul 11.07.2011 19:23
Спасибо! :-)
Цитировать
 
 
0 #3 Лалка 22.05.2013 22:15
:lol: спосибки!) мне оч помогло =D :-*
Цитировать
 

Добавить комментарий


Защитный код
Обновить