2009-06-30 68 views
7

我有以下代碼:爲什麼不THashedStringList忽略重複?

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; 

但是,當我看到sl.Count,它給了我7.什麼是這個錯誤?

回答

15

您需要將Sorted屬性設置爲TRUE才能讓列表忽略重複項。該物業由TStringList繼承的,如果你看一下文檔TStringList.Duplicates,你會發現:

注:重複做什麼,如果不排序的名單。

+4

而這是因爲THashedStringList從TStringList繼承它的Duplicates屬性,以及它對Add方法的行爲。在這個Pavan的例子中沒有什麼特別的THashedStringList。 – 2009-06-30 15:59:40