2009-06-30 14 views
7

Tengo el siguiente código:¿Por qué THashedStringList ignora los duplicados?

var 
    sl: THashedStringList; 
begin 
    sl:= THashedStringList.Create; 
    sl.Duplicates := dupIgnore; 
    sl.Add('12345'); 
    sl.Add('12345'); 
    sl.Add('12345'); 
    sl.Add('12345'); 
    sl.Add('12345'); 
    sl.Add('12345'); 
    sl.Add('12345'); 
    ShowMessage(IntToSTr(sl.Count)); 
end; 

Pero cuando veo sl.Count, me da 7. ¿Cuál es el error en esto?

Respuesta

15

Debe establecer la propiedad Sorted en TRUE para que la lista ignore los duplicados. La propiedad se hereda de TStringList, y si nos fijamos en la documentación de TStringList.Duplicates encontrará:

Nota: duplicados no hace nada si la lista no está ordenada.

+4

Y eso es porque THashedStringList hereda su propiedad Duplicados de TStringList, así como su comportamiento para el método Add. No hay nada de especial en THashedStringList en el ejemplo de Pavan. –

+0

Gracias por el comentario, edité la respuesta en consecuencia. – mghie

+0

Lo siento, error tonto. – Pavan

Cuestiones relacionadas