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 :

récupérer une instance à partir de sa propriété


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut récupérer une instance à partir de sa propriété
    bonjour,
    j'ai le problème suivant (exemple simplifié):

    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
    interface
     
    TXClass = Class(TComponent)
    end;
     
    TYClass = Class(TThread)
    private
      FXClass:TXClass;
      constructor Create(AXClass: TXClass);
    end;
     
    implementation
     
    procedure  TYClass.Create(AXClass: TXClass);
    begin
      inherited Create(True);
      FXClass:=AXClass;
    end;
     
     
    XClass:=TXClass.Create(nil);
    YClass:=TYClass.Create(XClass);
     
    procedure TX.OnEvent(Sender: TObject);
    begin
       TXClass(Sender)????????
    end;
    au déclenchement de OnEvent, j'obtiens une instance d'objet de type TXClass
    qui est également la propriété FXClass d'une instance d'objet TYClass précise
    existe-t-il un moyen de récupérer cette instance à partir de la propriété ?
    les rtti, a priori, ne permettent pas de récupérer ce type d'info où alors j'ai zappé un truc
    merci pour toutes vos suggestions
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    non, si XClass ne possède pas de référence vers YClass il n'est pas possible de le retrouver...c'est assez logique d'ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XClass:=TXClass.Create(nil);
    YClass1:=TYClass.Create(XClass);
    YClass2:=TYClass.Create(XClass);
    quelle instance devrait retourner XClass ? YClass1 ou YClass2 ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 550
    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 550
    Points : 25 120
    Points
    25 120
    Par défaut
    le plus simple serait de gérer une propriété Parent de type YClass dans XClass ... comme le Owner ou le Parent dans TComponent ou TControl ... le tout couplé avec une notification pour les libérations de l'un ou l'autre évidemment !
    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

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    trève estivale finie, j'ai repris le problème
    le plus simple serait de gérer une propriété Parent de type YClass dans XClass
    bin c'est sûr, mais j'avais oublié de préciser que TXClass n'était pas en pratique dérivable (fuites mémoire) faute d'accès à sa source
    c'est pourquoi je me demandais si le compilateur, lors de l'instanciation de la propriété FXClass maintenait nativement un champ, par hypothèse non documenté, pointant en amont vers l'instance de son objet "parent"
    donc la réponse est non et je me suis débrouillé avec une petite astuce scabreuse, la prop Tag étant déjà utilisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure  TYClass.Execute;
    begin
    .
    FXClass.DesignInfo:=Integer(Self);
    .
    end;
    so résolu
    merci pour vos réponses
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 21/08/2009, 10h44
  2. Récupérer une instance d'un objet
    Par MDiabolo dans le forum MFC
    Réponses: 9
    Dernier message: 26/01/2007, 10h41
  3. Comment récupérer une instance de Graphics::TGraphic ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2006, 15h01
  4. Réponses: 11
    Dernier message: 13/07/2006, 16h15
  5. Récupérer une variable à partir de son nom ...
    Par CynO dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/10/2005, 16h59

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