Accueil > > > CONSERVER LES NOMS DE DÉFINITION D'UN TYPE ÉNUMÉRÉ
CONSERVER LES NOMS DE DÉFINITION D'UN TYPE ÉNUMÉRÉ
Information sur la source
Description
C'est un truc tout simple pour afficher les nom de constante utilisés dans un type énuméré. Il permet aussi de déterminer l'indice dans le type en ne connaissant que le nom. Par exemple si on définit un type enuméré du style TMonTypeEnum=(mtUN,mtDEUX,mtTROIS), Delphi traite les variables de ce type comme des variables de type ordinal. Il n'est pas directement possible d'en afficher le nom comme on affiche un entier avec IntToStr. Le plus souvent on utilise un Case Of pour donner les noms : Var t:TmonTypeEnum; ... Case t Of mtUn:LeNom:='mtUN'; mtDeux:LeNom:='mtDEUX'; mtT rois:LeNom:='mtTROIS'; End; Or il est possible de demander à Delphi de conserver les noms dans le .EXE et de les obtenir. Je ne savais pas du tout que c'était possible, c'est donc pour cela que je poste ce truc. Je n'était peut-être pas le seul à ne pas le savoir. Dans l'exemple ci dessus il suffit de faire LeNom:=GetEnumName(TypeInfo(TMonTypeEnum),In teger(t)); GetEnumName n'est pas documentée dans l'aide de Delphi 6. Il est vrai que son utilisation est plutôt rare...
Source
- Uses TypInfo;
-
- type
- // Défintion d'un type personnalisé tout simple
- Type TChiffre=(Zero,Un,Deux,Trois,Quatre,Cinq,Six,Sept,Huit,Neuf);
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- // Affichage du nom de la constante définie dans le type énuméré
- ShowMessage(GetEnumName(TypeInfo(TChiffre),SpinEdit1.Value));
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- Var i:Integer;
- begin
- // Obtention de l'indice de la constante
- i := GetEnumValue(TypeInfo(TChiffre),Edit1.Text);
- if i<0 Then Label2.Caption:='<inconnu>'
- Else Label2.Caption:=IntToStr(i);
- end;
-
Uses TypInfo;
type
// Défintion d'un type personnalisé tout simple
Type TChiffre=(Zero,Un,Deux,Trois,Quatre,Cinq,Six,Sept,Huit,Neuf);
procedure TForm1.Button1Click(Sender: TObject);
begin
// Affichage du nom de la constante définie dans le type énuméré
ShowMessage(GetEnumName(TypeInfo(TChiffre),SpinEdit1.Value));
end;
procedure TForm1.Button2Click(Sender: TObject);
Var i:Integer;
begin
// Obtention de l'indice de la constante
i := GetEnumValue(TypeInfo(TChiffre),Edit1.Text);
if i<0 Then Label2.Caption:='<inconnu>'
Else Label2.Caption:=IntToStr(i);
end;
Conclusion
La directive $M à été supprimée du source, après le commentaire de Delphiprog.
Cette source et quelques autres sur : http://nono40.developpez.com
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Affectation avec un type énuméré [ par EddiTheHead ]
Voici un exemple : Type TypeCouleur = (Rouge, Vert, Bleu); Var Couleur : TypeCouleur; Chaque élément à un N° d'ordre
type ENUM sauvegarde et restauration dans un fichier texte [ par EmKa69 ]
Bonjour à tous, je sauvegarde des variables de type enum dans un fichier texte en les convertissant en chaine. avec le code suivant: procedure Save(No
subreport [ par Hamitouche ]
bonjour j'ai probleme dans un etat fastreport , j'ai utiliser plusieurs subreports sur une bande masterdata et chaque subreport et relier a un query
DBgrid [ par nraloux ]
Salut à tous, j'ai un problème de rafraichissement de la DBgrid et je sais pas d'ou viens le problème.Je me connecte a la base de donnée par programma
Graphe boursier [ par nicola40 ]
Bonjour à tous, et très bonne année 2010[^^clinoeil1] je ne suis pas au top en delphi,mais je progresse .... lentement avec beaucoup de questions ! [
Le fameux message: "Could not convert variant of type (Null) into type (String)" [ par Lunasoft ]
[size=300]Bonsoir! Ma question paraitra peut être étrange. Mais elle est simple. Ça fait plusieurs mois que je n'arrive pas à faire taire ce message:
champ de type date [ par gigabyte ]
bjr tt le monde j'ai un table portant 03 champ: n°eleve,nom, date naissance. je voudrais trier la table par date naissance exemple: afficher que les
inserer une image dans une base de donnees [ par chahinerue6 ]
Bonjour a vous tous je voudrait solicite votre aide si ces possible exactement dans les basse de donnees est ma question est que je voudrait inserer
ODBC SAGE (Base approprie ) [ par ataeallah ]
Bonjour tous, J'utilise le driver ODBC pour pouvoir communiquer avec une base sage 100 ver 16.5. Pour les updates je n'ai pas de problème, par contre
Utilisation du Type : TMonitor [ par tuss ]
DEpuis pas longtemps en multi-écran j'ai donc décidé de modifier mes vieux programme. Comment utiliser le Type : TMonitor J'identifie bien mes écran
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|