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 :

Rtti instancier un objet


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut Rtti instancier un objet
    Bonjour,
    J'ai:
    Maclasse1 = class Abstract;
    Maclasse2 = class(Maclasse1);

    je voudrai utiliser
    Instance.GetMethod('create').Invoke(ClassRef,Args).AsType<T>;
    pour instancier maclasse2.

    lorsque je fait TRttiContext.FindType(Maclasse2.Name) il me renvoi nil;
    Mais TRttiContext.FindType(Maclasse1.Name) ne me renvoi pas nil, car j'ai une variable de ce type que j'utilise dans mon code.

    comment je peux forcer le compilateur à la Mapper?


    merci de vos réponses ou de vos pistes.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 452
    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 452
    Points : 24 863
    Points
    24 863
    Par défaut
    Il faudrait que tu utilises la classe !
    Le compilateur voit un code inutile, il ne compile pas !

    Sinon, bien avant les RTTI next gen, on pouvait faire des factory de ce genre !
    Avec un bon vieux tableau de "class of" ou via RegisterClass\FindClass

    Le critère de la factory pourrait être
    - une énumération : Création d'un object sur classe dynamique ou Créer une instance d'objet depuis son nom de classe
    - une chaine Ouverture d'une TForm selon valeur d'un String

    Ajouter une classe MaclasseManager
    Avec une fonction Register qui ajoute une classe dans une TClassList
    Dans le projet, tu écrit MaclasseManager.Register(Maclasse2);

    Ailleurs, dans le code MaclasseManager.Factory(Maclasse2);

    En fait, le TEdit, TButton, ça fonctionne ainsi avec RegisterClass et FindClass ... la base étant le TComponent fournissant le constructeur avec Owner
    FMX fonctionne aussi par un système de register par exemple pour la gestion du JPEG

    Essaye d'abord d'écrire un code simple Delphi avant de vouloir utiliser une uzinagaz rtti !
    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 du Club
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 44
    Points
    44
    Par défaut
    Merci ShaiLeTroll de ta réponse.

    Actuellement je stock toutes les classes que je souhaite instancier dynamiquement dans un Tableau.
    Je vais donc rester ainsi.

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

Discussions similaires

  1. [Reflection] Instancier un objet
    Par bl@st dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/10/2008, 11h09
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  4. Réponses: 6
    Dernier message: 18/01/2006, 16h26
  5. instancier un objet Excel
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 13/12/2005, 15h51

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