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 :

Méthode sort d'un TObjectList


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Par défaut Méthode sort d'un TObjectList
    Bonjour,
    je suis débutant, j'aimerais améliorer ma méthode de trie de mon TObjectList
    en vous remercient d'avance,
    voici mon code:

    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
    20
    21
    22
    23
    24
    25
    26
    function compare(item1, item2 : pointer) : integer;
    begin
      if TObject(item1).ClassName > TObject(item2).ClassName then
        result := 1
      else if TObject(item1).ClassName < TObject(item2).ClassName then
        result := -1
      else
        result := 0;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);var
      Liste : TListeDeTrucs;
      i : integer;
    begin
     Liste := TListeDeTrucs.Create(true);
     Liste.Add(TTruc.Create('A'));
    Liste.Add(TTruc.Create('C'));
    Liste.Add(TTruc.Create('D'));
    Liste.Add(TTruc.Create('B'));
    Liste.Sort(@compare);
      for i := 0 to Liste.count - 1 do
       begin 
        showMessage(Liste.items[i].libelle);
       end;
      Liste.Free;
    end;
    le résultat:
    D,B,A,C
    alors, que je voudrais A,B,C,D
    merci d'avance

  2. #2
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Bonjour,

    Effectivement, dans ta fonction Compare tu ne fais pas la comparaison sur la propriété Libelle mais sur la propriété ClassName de l'objet.

    ( ClassName renvoie une chaine de caractère indiquant le type de l'objet )

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function compare(item1, item2 : pointer) : integer;
    var
      truc1: TTruc; absolute item1;
      truc2: TTruc; absolute item2;
    begin
      Result := CompareText(truc1.Libelle, truc2.Libelle);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Inactif  
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 47
    Par défaut remerciements
    Bonsoir,
    Un grand merci pour vos réponses,
    merci Paul THOTH, pour votre exemple, je vais le mettre en place.
    Je m'y étais très mal pris , car, j'avais essayé une fonction de ce même genre.
    Un grand merci
    Cordialement

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 938
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    Par défaut
    On peut directement typer les arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Compare(Truc1, Truc2 : TTruc) : integer;
    begin
      Result := CompareText(Truc1.Libelle, Truc2.Libelle);
    end;

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    On peut directement typer les arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Compare(Truc1, Truc2 : TTruc) : integer;
    begin
      Result := CompareText(Truc1.Libelle, Truc2.Libelle);
    end;
    tu n'as pas l'erreur E2010 Types incompatibles : 'Pointer' et 'TTruc' ? lors de l'appel à TList.Sort(Compare) ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. Pb méthode sort sur une feuille protégée
    Par skan_one dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2009, 11h48
  2. Erreur avec la méthode Sort
    Par phal2ip dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 20/10/2008, 09h21
  3. Réponses: 4
    Dernier message: 13/08/2008, 22h16
  4. [Lazarus] Méthode sort dans une TList
    Par pduceux dans le forum Lazarus
    Réponses: 1
    Dernier message: 21/06/2007, 17h43
  5. Runtime.getRuntime().exec(String) méthode sort
    Par devAd dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2006, 13h53

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