From f2491ead0540a3929f1027056365a5e260e86a8d Mon Sep 17 00:00:00 2001 From: bart <9132501-flyingsheep@users.noreply.gitlab.com> Date: Sat, 10 Jan 2015 15:35:20 +0000 Subject: [PATCH] DictionaryStringlist: Deduplicate: allow the AStrings to have objects if it does not own them. git-svn-id: trunk@47328 - --- components/lazutils/dictionarystringlist.pas | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/components/lazutils/dictionarystringlist.pas b/components/lazutils/dictionarystringlist.pas index f41a95ab14..a8e06b9079 100644 --- a/components/lazutils/dictionarystringlist.pas +++ b/components/lazutils/dictionarystringlist.pas @@ -53,22 +53,25 @@ type function IndexOf(const S: string): Integer; override; end; -function Deduplicate(AStrings: TStrings): Boolean; +function Deduplicate(AStrings: TStrings; AStringsOwnsObjects: Boolean = True): Boolean; implementation { - Removes duplicate strings (case sensitive) from the AStrings object - When the AStrings contains objects, the function will return false. + Removes duplicate strings (case sensitive) from AStrings. + When the AStrings owns and contains objects, the function will return false. } -function Deduplicate(AStrings: TStrings): Boolean; +function Deduplicate(AStrings: TStrings; AStringsOwnsObjects: Boolean): Boolean; var i: Integer; DSL: TDictionaryStringList; begin Result := False; - for i := 0 to AStrings.Count - 1 do + if AStringsOwnsObjects then + begin + for i := 0 to AStrings.Count - 1 do if Assigned(AStrings.Objects[i]) then Exit; + end; DSL := TDictionaryStringList.Create; try DSL.Assign(AStrings);