2009-06-30 27 views
7

Tôi có đoạn mã sau:Tại sao THashedStringList bỏ qua các bản sao?

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; 

Nhưng khi tôi nhìn thấy sl.Count, nó mang lại cho tôi 7. lỗi trong việc này là gì?

Trả lời

15

Bạn cần đặt thuộc tính Sorted thành TRUE để danh sách bỏ qua trùng lặp. Khách sạn được thừa hưởng từ TStringList, và nếu bạn nhìn vào các tài liệu cho TStringList.Duplicates bạn sẽ tìm thấy:

Lưu ý: Bản sao không làm gì nếu danh sách không sắp xếp.

+4

Và đó là vì THashedStringList kế thừa thuộc tính Trùng lặp của nó từ TStringList, cũng như hành vi của nó cho phương thức Thêm. Không có gì đặc biệt về THashedStringList trong ví dụ của Pavan này. –

+0

Cảm ơn nhận xét, tôi đã chỉnh sửa câu trả lời cho phù hợp. – mghie

+0

Xin lỗi, sai lầm ngớ ngẩn. – Pavan

Các vấn đề liên quan