我有一个列表框,有10,000个项目和许多重复的项目!我Wonna保存到一个文件没有重复项(一个项目而不是所有副本!),我用这样的方式:ListBox Filtering
Function TMain.List_ExistsIn(ListBox_NAme: TListBox; EParameter: String): Integer;
Var
i: Integer;
Begin
EParameter := LowerCase(EParameter);
Result := -1;
For i:=0 To ListBox_Name.Items.Count - 1 Do
If EParameter = Lowercase(ListBox_Name.Items[i]) Then Begin
Result := i;
Break;
End;
End;
我用上面的代码来检测现有项目及以下步骤保存它:
Procedure TMain.MakeList(ListBox_Name: TListBox; FileName: String); //================
Var
i: Integer;
Temp_ListBox: TListBox;
Begin
Temp_ListBox := TListBox.Create(Main);
With Temp_ListBox Do Begin
Parent := Main;
Clear;
For i:=0 To ListBox_Name.Count - 1 Do
If Main.List_ExistsIn(Temp_ListBox, ListBox_Name.Items[i]) = -1 Then
Items.Add(ListBox_Name.Items[i]);
Items.SaveToFile(FileName);
Free;
End;
End;
但需要很长的时间才能继续。有没有更好更快的方法? 谢谢。
只需添加到Bharat的答案:由于Delphi6 TStringList有一个CaseSensitive属性,控制字符串如何评估“重复性”。 – 2010-06-21 10:15:41
不要忘记在最后添加一个StrList.Free(最好在尝试后..最后)。 – mjn 2010-06-21 10:47:47