IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Suprimer duplica dune TStringList


Sujet :

Delphi

  1. #1
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut Suprimer duplica dune TStringList
    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.

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    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 :
    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;
    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
    Bidouilleuse Delphi

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 113
    Points
    113
    Par défaut
    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;

  4. #4
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Abbrevia et suprimer des dossiers pleins
    Par smyley dans le forum Langage
    Réponses: 6
    Dernier message: 11/06/2003, 15h25
  2. [langage] recuperer le dernier mot dune ligne
    Par kacedda dans le forum Langage
    Réponses: 6
    Dernier message: 29/04/2003, 14h38
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37
  4. TStringList
    Par giaco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2002, 13h50
  5. Dérivation dune fonction
    Par srvremi dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/07/2002, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo