2009-06-30 13 views
7

Mam następujący kod:Dlaczego ThashedStringList nie ignoruje duplikatów?

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; 

Ale kiedy widzę sl.Count, to daje mi 7. Co to jest błąd w tym?

Odpowiedz

15

Musisz ustawić właściwość Sorted na PRAWDA, aby lista ignorowała duplikaty. Właściwość jest dziedziczona z TStringList, a jeśli spojrzeć na dokumentacji TStringList.Duplicates znajdziesz:

Uwaga: duplikaty nie robi nic, jeśli lista nie jest posortowana.

+4

A to dlatego, że ThashedStringList dziedziczy własność Duplicates z TStringList, a także jej zachowanie dla metody Add. Nie ma nic szczególnego w THashedStringList w tym przykładzie Pavana. –

+0

Dzięki za komentarz, odpowiednio zredagowałem odpowiedź. – mghie

+0

Przepraszam, głupi błąd. – Pavan

Powiązane problemy