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 :

Comment ajouter un objet dans un TLIST ?


Sujet :

Langage Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 369
    Billets dans le blog
    1
    Par défaut Comment ajouter un objet dans un TLIST ?
    je suis sous W10 avec Delphi 6 PE.

    J'essaie d'utiliser un TLIst comme index dynamique poyr des enregsirements dans un fichier binaire.
    L'accès au fichier binaire fonctionne bien.

    J'ai créé un objet constituant un éément de mon index, composé de deux entités:
    - une clé binaire représentée dans ARRAY OF BYTE dynamique
    - un index dans mon fichier, contenu dans un INTEGER.
    Ma clé binaire est composée d'une partie texte avec une longueur fixe de 20 caractures (paramétrée par une constante) et une partie binaire représentée par une valeur integer pour la démo. Ma clé est donc de 24 caractères.

    Mon objet contenant la clé est défini comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
      pTIndexElement = ^TIndexElement;
      TIndexElement = class
        Key: array of byte;
        private
          fIndex: integer;
        published
          constructor CreateNew(aSize: integer);
          destructor Destroy; override;
          property Index: integer read fIndex write fIndex;
      end;
    Je peux créer cet objet le le charger avec mes valeurs sans problème.

    Mais ensuite, il faut l'ajouter à un TLIST et j'ai toujours une violation de mémoire.
    Je fais comme ceci:
    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
    var
      IDX: TList;
    ...
    procedure TForm1.Button2Click(Sender: TObject);
    var
      IE: TIndexElement;
      s: string;
      pb: pByte;
      kint, ind: integer;
      p: Pointer;
    begin
      IE := TIndexElement.CreateNew(TextKeyLength+BinaryKeyLength);
      s := LeftStr(Edit1.Text+StringOfChar(' ',TextKeyLength),TextKeyLength);
      kint := SpinEdit1.Value;
      ind  := SpinEdit2.Value;
      pb := pByte(@IE.Key[0]);
    showmessage('a1');
      Move(s,pb^,TextKeyLength);
    showmessage('a2');
      inc(pb,TextKeyLength);
      Move(kint,pb^,BinaryKeyLength);
    showmessage('a3');
      IE.Index := ind;
    showmessage('a4');
      IDX.Add(IE);              // violation de mémoire
      IDX.Add(@IE);             // violation de mémoire
      IDX.Add(Pointer(IE));     // violation de mémoire
    showmessage('a5');
    end;
    Quelque soit la syntaxe de la méthode ADD parmi les 3 essayés, j'ai toujours une violation de mémoire.
    Mon l$MEssage a4 apparaît, mais pas le a5.

    En pièce jointe, j'ai mis un fichier ZIP avec le projet complet.

    Pourriez-vous me mettre sur la voie, s'il vous plaît ! Merci d'avabce !
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/06/2022, 12h37
  2. Réponses: 2
    Dernier message: 23/08/2017, 11h39
  3. Réponses: 2
    Dernier message: 19/05/2009, 23h41
  4. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40
  5. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03

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