begin process at 2013 05 24 20:22:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Comment tester si un élément appartient à une liste énumérée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment tester si un élément appartient à une liste énumérée

jeudi 28 juin 2012 à 17:33:30 | Comment tester si un élément appartient à une liste énumérée

Jean_Jean

Membre Club
Bonjour,

Je voudrais trouver une astuce s'il elle existe pour identifier l'appartenance à une liste d'un élément de liste.
Sans passer par un tableau ou un type ensemble!

Code Delphi :
Type
  TE1 = (e11,e12,e13,e14,e15);
  TE2 = (e21,e22,e23);


Si je teste l'élément e22 avec

Code Delphi :
For i := Ord(Low(TE1)) to Ord(High(TE1)) do
if TE1(i) = e22 then Pos := i;


Le compilateur refuse me signalant que e22
n'appartient pas à TE1
Et l'encapsulation du code dans un Try..Except ne marche pas non plus!

Peut-être une directive de compilation qui encadrerait le code, mais j'ai pas trouvé!...

Qu'en pensez-vous?

Jean_Jean
jeudi 28 juin 2012 à 19:27:35 | Re : Comment tester si un élément appartient à une liste énumérée

Caribensila

Membre Club
Réponse acceptée !
Salut Jean_Jean,

Tu peux attribuer un rang à tes énumérés.

Ce qui donnerait quelque chose comme ça :
Code Delphi :
Type
  TE1 = (e11=0,e12=1,e13=2,e14=3,e15=4);
  TE2 = (e21=5,e22=6,e23=7);
...
if Ord(e23)<5 then Pos := Ord(e23) else Pos := Ord(e23)-5;


Ou, avec cette technique, quelque chose qui s'adapterait mieux à tes besoins...
A toi de voir.

jeudi 28 juin 2012 à 20:49:23 | Re : Comment tester si un élément appartient à une liste énumérée

Jean_Jean

Membre Club
Yo Grand Caribensila!

C'est une solution qui marche en effet sous D7. Merci pour tes lumières!

Je vais quand même essayer de trouver une autre solution avec XE2. J'ai vu qu'ils avait rajouter quelques possibilités...

Je publierai les résultats d'un exemple d'utilisation...
J'accumule les mises à jour! lol on ne s'ennuit pas

Jean_Jean
vendredi 29 juin 2012 à 09:18:08 | Re : Comment tester si un élément appartient à une liste énumérée

Jean_Jean

Membre Club
Réponse acceptée !
J'ai trouvé une autre solution en utilisant TSringList.

En effet, les listes d'énumérés en question
sont destinées à faciliter une maintenance de programme. Le fait de rajouter des numéros d'ordre à côté amoindri la lisibilité du code à modifier éventuellement ou même pour un simple ajout.

J'ai donc chercher à me passer de cette numérotation manuelle:

Je procède ainsi:

Code Delphi :
VAR ListEnum : TStringList;
...
For ii := Ord(Low(TE1)) to Ord(High(TE1)) do
ListEnum.Add(GetEnumName(TypeInfo(TE1),ii));
For ii := Ord(Low(TE2)) to Ord(High(TE2)) do
ListEnum.Add(GetEnumName(TypeInfo(TE2),ii));


L'index d'un élément n'est plus un problème!

Mais je ne trouve pas que le code est vraiment propre,
je cherche donc une autre solution en essayant d'utiliser directement les possibilités de la RTTI
Quant à XE2, à part les possibilités d'utiliser succ et pred, je ne trouve pas grand chose de nouveau

Jean_Jean
samedi 30 juin 2012 à 00:02:11 | Re : Comment tester si un élément appartient à une liste énumérée

Jean_Jean

Membre Club
j'ai fait un petit exemple de code ici.

Je suis sur une piste pour me passer également d'une StringList! Avec le type abstrait TObject que je suis obliger d'utiliser pour acquérir le TypeInfo...
ça torture un peu mes neurones...

Jean_Jean


Cette discussion est classée dans : élément, code, liste, te1, e22


Répondre à ce message

Sujets en rapport avec ce message

liste et record... [ par XgaletteX ] Bonjour,Alors voila mon pb, j'ai une liste de record et je dois récupérer un élément de la liste en ne connaissant uniquement un élément du record qui suppression dans une liste chainée [ par mister_dsg ] voila je cherche a supprimer un élément dans une liste chainée, seulement je butte sur le fait de pouvoir supprimer l'élément et ensuite de raccorder Liste des Fiches+composants [ par Millenod ] Bonjour,Je planche depuis quelques jours sur le problème suivant : récupérer la liste de tous les composants visuels de chaque fiche d'une application Besoin d'aide sur une tlistview [ par casper150 ] Salut a tous, j'essaye de charger le contenu de mon fichier INI dans une tlistview mais j'avoue que je galère un peut je connais la section qui est Editeur 3d avec du opengl [ par pestiferer ] Bonjours! Voici donc, une liste de fonction qui se situe dans mon fichier de base. [code]uses Windows, Messages, SysUtils, Classes, Graphics, Contr Comment récupérer le n ième élément d'un ensemble ? [ par bluemandfr ] Bonjour à tous. Soit l'ensemble : [code=pas]MonEns : set of byte;[/code] Je souhaite à un moment donné de mon traitement récupérer le n ième élémen Problème de code JQuery-Mobile avec Delphi [ par avicennesy ] Bonjour J'ai suivi un Tutoriel pour integrer jquery-mobile dans une application intraweb. or, quand je crée des pages html dans lesquels je fais des c Desactiver le CTRL+V d'un edit dans une MDIChild [ par drexl ] Bonjour a tous, Je dois développer une application utilisant des form mdichild. Je dois faire en sorte que mes LabelEdit soient formatés de manière a


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales