You can set the Duplicate method of TStringList object with dupIgnore :
procedure CombineStrings(S1, S2, CombinedList: TStringList);
begin
S1.Duplicates := dupIgnore;
S1.Sorted := True;
S1.AddStrings(S2);
CombinedList := S1;
end;
Sample :
var
SList1, SList2: TStringList;
begin
SList1 := TStringList.Create;
SList2 := TStringList.Create;
try
SList1.Add('Item 1');
SList1.Add('Item 2');
SList2.Add('Item 1');
SList2.Add('Item 2');
SList2.Add('Item 3');
CombineStrings(SList1, SList2, SList1);
ListBox1.Items.Assign(SList1);
finally
SList1.Free;
SList2.Free;
end;
end;