Hola.
Al agregar el objeto al StringList debes colocarle un identificador. El IndexOf verifica ese identificador.
Código Delphi
[-]
procedure TForm1.ListarObjetos(Sender: TObject);
const
Nombres : Array [0..7] of string = ('Obj1', 'Obj2', 'Obj3', 'Obj1', 'Obj4', 'Obj2', 'Obj5', 'Obj1');
var
i: integer;
ListaObjetos: TStringList;
Nombre: string;
begin
ListaObjetos := TStringList.Create;
try
for i := Low(Nombres) to High(Nombres) do
begin
Nombre := Nombres[i].Trim;
if Nombre.IsEmpty or (ListaObjetos.IndexOf(Nombre.ToUpper) >= 0) then
Continue;
ListaObjetos.AddObject(Nombre.ToUpper, TObject.Create);
end;
finally
ListaObjetos.Free;
end;
end;