Mega Code Archive

 
Categories / Delphi / Ide Indy
 

Remove Duplicate Items in Delphis TStringList

Title: Remove Duplicate Items in Delphi's TStringList Tip submitted by Jens Borrisholt The non-visual component Delphi class, TStringList, stores and manipulates a list of strings. Each string can be associates with an object. The TStringList is derived from the base class for storing strings, TStrings. Many Delphi controls like TListBox, TComboBox and TMemo, for example, expose a property which is of the TStrings type: Items for TListBox, Lines for TMemo. Removing Duplicates from a TStringList When you fill in a string list with string items you might end up with a list holding duplicate strings - more than one item with the "same" string value. To remove duplicate values from the string list use the following procedure: //remove duplicate strings from the string list 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; Here's an example of usage: var sl : TStringList; cnt : integer; begin Randomize; sl := TStringList.Create; try for cnt := 1 to 1000 do sl.Add(IntToStr(Random(2000))) ; ShowMessage('With duplicates: ' + #13#10 + IntToStr(sl.Count)) ; RemoveDuplicates(sl) ; ShowMessage('Without duplicates: ' + #13#10 + IntToStr(sl.Count)) ; finally sl.Free; end; end; Note: Randomize initializes the random number generator; Random returns a randomly generated number within a specified range.