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

Delphi Discussion :

Types Enumérés et Transtypage


Sujet :

Delphi

  1. #1
    Dry
    Dry est déconnecté
    Membre du Club

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 48
    Points : 50
    Points
    50
    Par défaut Types Enumérés et Transtypage
    Bonjour,

    Concidérons le type énuméré suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMaCouleur = (mcRouge, mcBleu, mcVert, mcJaune, mcOrange);
    Est-il possible de retrouver automatiquement le bon type à partir d'une chaine de caractère valant par exemple 'mcJaune' ?

    En d'autre terme réaliser l'opération suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyColor : TMaCouleur;
    MyColor := TMaCouleur('mcJaune');
    évidement, sans passer par un morceau de code comme celui-ci, qui ne vaux pas grand chose si on rajoute un élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StrColor : String;
    MyColor : TMaCouleur;
    if StrColor = 'mcRouge' then MyColor := mcRouge;
    if StrColor = 'mcBleu' then MyColor := mcBleu;
    ...

    Merci par avance,
    Dry

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    utilise les tableaux
    ce la te permet de connaittre le rang dans ton ensemble et inversement

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      uses TypInfo;
      ...
     
      MaCouleur := TMaCouleur(GetEnumValue(TypeInfo(TMaCouleur), 'mcJaune'));
    @+ Claudius

  4. #4
    Dry
    Dry est déconnecté
    Membre du Club

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 48
    Points : 50
    Points
    50
    Par défaut
    Excelent,
    c'est exactement ce que je cherchais.

    Merci !

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Et il y a aussi l'opération inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses TypInfo;
    var NomDeMaCouleur:string;
         MaCouleur:TCouleur;
      ...
      MaCouleur:=mcJaune; 
      NomDeMaCouleur:=GetEnumName(TypeInfo(TMaCouleur),MaCouleur);
    Bidouilleuse Delphi

  6. #6
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Voir à ce sujet les tutoriels sur les RTTI
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

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

Discussions similaires

  1. [D4]type originel après transtypage de classe
    Par omen999 dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2009, 10h37
  2. utiliser le type d'un OLEObject ? (Transtypage)
    Par radagast35 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/05/2008, 17h06
  3. Le VBA et le transtypage (conversion de type) ?
    Par Falcdyr dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/04/2008, 09h50
  4. transtypage dans un type qui varie
    Par Braillane dans le forum C#
    Réponses: 5
    Dernier message: 26/09/2007, 17h08
  5. Réponses: 10
    Dernier message: 16/12/2004, 15h23

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