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

Langage Delphi Discussion :

Record et TObject


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Record et TObject

    Bonjour à tous,

    J'aurais voulu savoir s'il y avait moyen de transtyper une structure (record) en TObject afin de le stocker dans la propriété Object d'une TList. L'intérêt de cette manipulation est de stocker plusieurs jeux de paramètres pour chaque ligne de ma liste

    Mais peut-être faut-il approcher le problème d'une façon différente, je suis ouvert à tout commentaire.

    D'avance merci,

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Tout d'abord, je suppose que l'on parle d'une TStringList et non d'une TList (pas de propriété Object dans une TList).
    Le plus simple (a priori) serait de ne plus utiliser de records et de les remplacer par des objets. Dans ce cas, il suffit de créer une nouvelle instance pour chaque élément de la TStringList et de l'y ajouter.
    Si tu veux conserver tes records, il est nécessaire de les transtyper par TObject(monrecord). Mais attention, il faut avoir autant de variables monrecord que de lignes. Pour éviter ce problème, tu peux utiliser des pointeurs sur record:
    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
    type
      TMonRecord = record
        valeur: Integer;
      end;
      PMonRecord = ^TMonRecord; // Pointeur sur le type TMonRecord
     
    procedure FillList(AList: TStringList);
    var
      i: Integer;
      MonRecord: PMonRecord;
    begin
      for i:=0 to AList.Count - 1 do
      begin
        New(MonRecord); // Allocation d'un nouvel enregistrement et affectation du pointeur
        AList.Objects[i]:= TObject(MonRecord);
      end;
    end;
     
    procedure ReadList(AList: TStringList);
    var
      i: Integer;
      MonRecord: PMonRecord;
    begin
      for i:=0 to AList.Count - 1 do
      begin
        MonRecord:= PMonRecord(AList.Objects[i]);
        Writeln(MonRecord.Valeur);
      end;
    end;
     
    procedure FreeListPointers(AList: TStringList);
    var
      i: Integer;
      MonRecord: PMonRecord;
    begin
      for i:=0 to AList.Count - 1 do
      begin
        MonRecord:= PMonRecord(AList.Objects[i]);
        Dispose(MonRecord);
        AList.Objects[i]:= nil;
      end;
    end;
    PS: le code précédent a été écrit directement sur le forum, il n'est donc pas testé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 10
    Points : 7
    Points
    7
    Par défaut ça résoud mon problème, merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/01/2003, 13h45
  2. Stocker un record dans un fichier
    Par ushu dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2002, 15h51
  3. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  4. TObject->Color et composantes RGB
    Par Flo. dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/06/2002, 17h07

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