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 :

Dédoublonner une liste ?


Sujet :

Delphi

  1. #1
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut Dédoublonner une liste ?
    Bonjour,

    Je cherche une méthode pour dédoublonner une liste, avez-vous déjà fait ce genre de chose ?

    Faut-il trier la liste par ordre alphabetique puis traiter les lignes une par une pour en supprimer les doublons ?

    Existe-t-il une méthode plus optimisée ?

    Merci,
    Mathieu

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    comment charge tu ta liste?

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Bonjour,

    "Liste.txt" chargée dans une TListBox via LoadFromFile.

    Merci,
    Mathieu

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    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 Dedoublonnage(var lst : TStringList);
    var
      iEncours : Integer;
    begin
      // on commence au dernier element de ta liste
      iEncours := lst.count -1;
      while iEncours >= 0 do
      begin
        while lst.indexof(lst.Strings[iEncours]) <> iEncours do
        begin
          lst.delete(lst.indexof(lst.strings[iEnCours]);
          // décale de 1 vu qu'on a supprimer un element avant
          dec(iEnCours); 
        end;
        // on passe a l'item précédent
        dec(iEnCours);  
      end;
    end;
    A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dedoublonnage(TaListBox.Items);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Bonjour,

    J'ai commencé à travaillé sur une TListBox, j'ai joué avec le Sorted mais c'est pas gagné

    Je vais tester ton code

    Merci,
    Mathieu

  6. #6
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Bonjour,

    Ca marche parfaitement et c'est très rapide merci !

    Code à mettre dans la FAQ !

    Merci,
    Mathieu

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Je pense pas que ce code soit vraiement utile pour être mis dans la FAQ, en réflechissant un peu et en connaissant les méthodes d'une ListBox (ou TStringList) on fait ca en moins de 5mn
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Bonjour,

    Oui, mais c'est pratique

    Petite question, pourquoi as-tu parcouru ta liste en sens inverse (dec) ?

    Merci,
    Mathieu

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Car IndexOf Recherche depuis le debut de la liste, donc si je veux pouvoir trouver les tous doublons des la première fois il faut que je parte de la fin sinon je ne trouverai le ou les doublons que plus tard.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    OK

    Mathieu

  11. #11
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    un autre code simplement (avec sorted a true)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure Dedoublonnage(var lst : TStringList);
    var
      i : Integer;
    begin
      i:=0;
      while i<lst.count-1 do
      begin
          if lst.item[i]=lst.item[i+1] then lst.delete(i)
         else inc(i);
      end;
    end;

  12. #12
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    il me semble que les TStringList avec la propriété Sorted à True ont une propriété Duplicates qui élimine les doublons quand elle est fixée à DupIgnore => aucun travail à faire...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  13. #13
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Bonjour,

    Merci pour vos informations, je vais regarder de ce côté la prochaine fois !

    Mathieu

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

Discussions similaires

  1. Afficher une liste de résultats triés et dédoublonnée
    Par Pierrea4564 dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2013, 16h37
  2. Dédoublonner une liste
    Par odalisk dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/09/2008, 17h38
  3. Fonction standard pour dédoublonner une liste ?
    Par ecocentric dans le forum Général Python
    Réponses: 3
    Dernier message: 22/08/2005, 10h41
  4. Générer une liste
    Par pfredin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/04/2003, 15h30
  5. tri d'une liste
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2003, 18h08

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