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 :

TObjectList : Comment l'utiliser ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut TObjectList : Comment l'utiliser ?
    Salut à tous,
    je vous prix de bien vouloir m'expliquer qu'est-ce que TObjectList et comment l'utiliser ?

    merci infiniment !

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Comme une TStringList mais au lieu de chaine, tu as des objets, et avant de venir ici tu fais F1, c'est pas difficile comme objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Machin := TTruc.create();
    List.Add(Machin);
    Bidule := TTruc(List.items[...]).Chose
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Et pour compléter, l'avantage de TObjectList c'est qu'il gère en interne la liberation des objets.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    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 931
    Billets dans le blog
    6
    Par défaut
    avec OwnsObjects=True : c'est très pratique et permet de faire un peu GarbageCollector !
    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 !

  5. #5
    Membre émérite
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Par défaut
    Une autre utilisation intéressante est de créer une liste avec des objets typés :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    uses Contnrs;
     
    type
      TTruc = class
      public
        libelle : string;
        constructor Create(pLibelle : string);
      end;
     
      TListeDeTrucs = class(TObjectList)
      private
        function GetItem(Index: Integer): TTruc;
        procedure SetItem(Index: Integer; const Value: TTruc);
      public
        function Add(AObject: TTruc): Integer;
        procedure Insert(Index: Integer; AObject: TObject);
        // idéalement, redéfinir toutes les méthodes qui renvoient un TObject
        property Items[Index: Integer]: TTruc read GetItem write SetItem; default;
      end;
     
    { TTruc }
     
    constructor TTruc.Create(pLibelle: string);
    begin
      libelle := pLibelle;
    end;
     
    { TListeDeTrucs }
     
    function TListeDeTrucs.Add(AObject: TTruc): Integer;
    begin
      result := inherited Add(AObject);
    end;
     
    procedure TListeDeTrucs.Insert(Index: Integer; AObject: TObject);
    begin
      inherited Insert(index, AObject);
    end;
     
    function TListeDeTrucs.GetItem(Index: Integer): TTruc;
    begin
      result := TTruc(inherited GetItem(index));
    end;
     
    procedure TListeDeTrucs.SetItem(Index: Integer; const Value: TTruc);
    begin
      inherited setItem(index, value);
    end;
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var
      l : TListeDeTrucs;
      i : integer;
    begin
      l := TListeDeTrucs.Create(true);
      l.Add(TTruc.Create('coucou'));
      l.Add(TTruc.Create('titi'));
      l.Add(TTruc.Create('toto'));
      for i := 0 to l.count - 1 do
        showMessage(l.items[i].libelle);
      l.Free;
    end;
    Bloon

  6. #6
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par tourlourou
    avec OwnsObjects=True : c'est très pratique et permet de faire un peu GarbageCollector !
    C'est vrai que c'est pratique que la liste se charge de détruire ses composants.
    Je l'utilise souvent.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Salut,

    Q : qu'est-ce que TObjectList

    R : Comme une TStringList mais au lieu de chaine, tu as des objets
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/02/2005, 14h39
  2. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  3. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37
  4. [scrapbook] comment l'utiliser ?
    Par Didier 69 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 16/04/2004, 17h28
  5. [INDY] -> IdIdentServer comment l'utiliser ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 9
    Dernier message: 06/08/2003, 16h00

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