Salut,
Je me demande sil ya une proprieté dans les TStringList pour suprimer les duplicas ou bien
ya til un autre compo qui les gere ?
Merci pour toute info
Salut,
Je me demande sil ya une proprieté dans les TStringList pour suprimer les duplicas ou bien
ya til un autre compo qui les gere ?
Merci pour toute info
Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.
Pour empêcher l'ajout de duplicats, tu as bien la propriété duplicates combinée avec sorted mais qui empêche en fait l'ajout de doublons :
Tu peux toujours l'exploiter comme ça :
Après si tu veux garder l'ordre initial, il faut savoir si tu veux garder, parmis tes doublons, celui du début ou celui de la fin dans ta liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure SupprimeDoublonsEtTrie(Lignes:TStrings); var asl:TStringList; begin asl:=TStringList.Create; asl.Sorted:=True; asl.Duplicates:=dupIgnore; asl.AddStrings(Lignes); Lignes.Text:=asl.Text; asl.Free; end;
Bidouilleuse Delphi
Le mieux c'est de les éviter pour cela tu as deux possibilités :
- Soit tu interdis l'insertion de duplicas avec la propriété Duplicates de ta stringlist. Dans ce cas n'oublie pas de la rendre triée avec la propriété Sorted à TRUE.
- Soit tu recherche si au moins une occurence de ta chaine est présente dans ta stringlist avec indexOf et avant de l'insérée (cas ou indexOf retourne -1).
Sinon tu peux toujours l'implémenter (un exemple rapide mais il y a moyen de faire mieux):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure SupprimerDuplica(MaChaine : string; var MaListe : TStringList) ; var iFirstPos, iCompteur : integer; begin iFirstPos := MaListe.indexOf(MaChaine); if iFirstPos <> -1 then begin for iCompteur := pred(MaListe.count) to (iFirstPos + 1) do begin if MaListe[iCompteur] = MaChaine then begin MaListe.delete[iCompteur]; end; end; end; end;
Merci,
jai pris la solution suivante c plus rapide je trouve.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 asl.Duplicates:=dupIgnore;
Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager