J'ai un ListBox avec 10 000 articles et beaucoup de nombreux articles en double! Je Wonna enregistrer dans un fichier sans les éléments en double (un élément plutôt que toutes les copies!) Et je l'utilise de cette façon:Filtrage ListBox
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;
I Utilisez le code ci-dessus pour détecter un élément existant et suite à la procédure pour la sauver:
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;
Mais il faut très très longtemps pour procéder. Yat-il un moyen meilleur et rapide? Merci.
Juste pour ajouter à la réponse de Bharat: Depuis Delphi6 TStringList a une propriété CaseSensitive qui contrôle comment les chaînes sont évaluées pour "duplicate-ness". –
Ne pas oublier d'ajouter un StrList.Free à la fin (meilleur après un essai .. enfin). – mjn