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 :

Liste de pointeur, adresse d'instance objet


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Points : 245
    Points
    245
    Par défaut Liste de pointeur, adresse d'instance objet
    Bonjour,

    Je fais référence à une ancienne discussion du forum nommée "Adresse d'une instance d'objet" pour ce post.

    Il y est écrit que les noms d'instances objets sont en fait des pointeurs sur des instances objets en mémoire.
    J’espère avoir compris.

    Ce que je veux faire c'est utiliser d'anciens modules maison qui travaille sur des listes de pointeurs avec par exemple une commande d'insertion dans la liste comme en suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure  insert_pointer  (var list_id        :  TLocalPtrList;
                                         given_pointer  :  pointer;
                                        var success        :  boolean);

    Ici on utilise un type pointer.

    Est-ce qu'il y aurait moyen de faire un cast ou autre chose pour que le nom de l'instance soit pris comme pointer par le programme?

    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 519
    Points : 25 037
    Points
    25 037
    Par défaut
    Ton histoire de "nom de l'instance" est très étrange car Adresse d'une instance d'objet n'évoque pas cela !

    Je crois que tu confonds tout simplement avec la propriété Name du TComponent et que l'on peut retrouver une instance via sa propriété Name via Onwer.FindComponent

    Et oui, Delphi est bien fait, le nom de la variable en published est la même chose que la valeur de Name du TComponent car c'est le moyen qu'utilise le Gestionnaire de Flux (les DFM) pour associer une référence publié genre Edit1, Memo1 avec l'instance produite à partir de la DFM

    Avec le code fourni, il n'y a que du procédural, donc aucune chance d'utiliser les RTTI ou les mécanisme du TComponent pour associer un "nom de l'instance" et une instance
    il nous faut plus de code pour comprendre !

    le var sur list_id de type TLocalPtrList me choque !
    Si c'est un array of, c'est logique
    Si c'est une TList, TObjectList ... c'est soit signe d'un manque de compréhension de la notion de "référence" (instance de classe) ou alors une construction de code étrange !

    given_pointer, on ignore ce qu'il reçoit, cela peut être un @Integer, un @string, un @record, une "référence" ou pire @référence !

    et pourquoi faire un var successet non pas une function ?
    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
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 862
    Points : 11 318
    Points
    11 318
    Billets dans le blog
    6
    Par défaut
    Ou alors, la question serait-elle : comment réaliser insert_pointer(MaListe, Memo1, Reussite); ?
    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 !

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Je pense que quand il parle de nom d'instance, c'est le nom de la variable.
    Effectivement tu peux, mais utiliser les classes existantes serait peut etre mieux que de mettre des objets dans ta liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //insertion
    insert_ptr(maListe, Pointer(monObjet), success);
     
    //version plus objet :
    TLocalPtrList = class(TObjectList)
    ... (spécificités) de ta liste
    end;
     
    ...
    var
      lst: TLocalPtrList;
    begin
      success := lst.Add(monObjet) <> -1;
    end;

Discussions similaires

  1. [POO] initialiser pointeur adresse objet ?
    Par Invité dans le forum Débuter
    Réponses: 3
    Dernier message: 10/11/2010, 23h30
  2. liste de pointeurs, détruire un objet
    Par Kush. dans le forum Débuter
    Réponses: 7
    Dernier message: 13/04/2010, 00h13
  3. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/12/2004, 08h46
  4. pointeur multiple sur un objet
    Par Arnaud-h dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/06/2004, 11h33
  5. [LG]liste chainee + pointeur + affichage
    Par k_ro dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2004, 13h58

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