cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
28 juin 2012 à 17:33
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 2018
-
29 juin 2012 à 09:18
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!
Type
TE1 = (e11,e12,e13,e14,e15);
TE2 = (e21,e22,e23);
Si je teste l'élément e22 avec
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
A voir également:
Vérifier si un élément est dans une liste python
Appartient en python - Meilleures réponses
Tester si un élément est dans une liste python - Meilleures réponses
cs_Jean_Jean
Messages postés615Date d'inscriptiondimanche 13 août 2006StatutMembreDernière intervention13 décembre 20183 29 juin 2012 à 09:18
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:
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