Créer un nouveau type

[Résolu]
Signaler
Messages postés
103
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
9 février 2006
-
Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
bonjour, j'ai créée un type composé de nombre et ca fonctionne:
type
TType = '0'..'9';

par contre j'aimerai y ajouter le caractère "_" et c'est lç que ca bloque...
d'après ce que j'ai trouvé dans une doc on pourrait faire: TType = ['_', '0'..'9'];
mais j'ai un message à la compilation qui me dit
"(Type) attendu(e) mais "[" trouvé(e)"

j'ai donc remplacé les "[" et "]" par "(" et ")" et là il me met un autre message:
"Identificateur attendu(e) mais constante chaine trouvé(e)

et j'avoue que je planne un peu...

3 réponses

Messages postés
58
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
2 juin 2006

Salut,

Ton "TType = '0'..'9';" est de type intervalle, tu ne peut avoir que le 1er et le dernier élèments. Le problème avec ce type, c'est que tu peut dépasser l'intervalle et planter ton prog (a moins de mettre la directive {$R+}).

Tu peut essayer avec un type ensemble :

Type TType = Set of Char;
Var Chiffre : TType;
Begin
Chiffre := ['_', '0'..'9'];
ou Chiffre := ['_', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

et puis faire le test de niki2001 :
If Caractere In Chiffre Then ...

Ou encore, de prendre un TEditMask.
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
1
Pour moi, c'est impossible. A mon sens tu devrais utiliser Char et faire le test "in ['_', '0'..'9']" avant chaque affectation.
J'espère que quelqu'un trouvera une meilleure solution.
Sur ce...
Messages postés
442
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
11 août 2008

Je suis d'accord avec Niki ça me parait difficile...
Ou alors peut-etre si tu met sous la forme ['0', '1', '2', '3', '8', '9', '_'] mais je suis pas sur...

neodelphi