salut tout le monde voils la probleme que j'ai
j'ai le type suivant :
et je voudrais faire un type qui "hérite" du premier sans qu 'il y ai l'état TEtatPasAction.Code:TType3etats=(TEtatOuvert,TEtatFerme,TEtatPasAction);
Comment faire??
Version imprimable
salut tout le monde voils la probleme que j'ai
j'ai le type suivant :
et je voudrais faire un type qui "hérite" du premier sans qu 'il y ai l'état TEtatPasAction.Code:TType3etats=(TEtatOuvert,TEtatFerme,TEtatPasAction);
Comment faire??
Salut
Question bête, qu'est-ce qui t'empêche de créer un 2° type ?
@+ ClaudiusCode:
1
2 TType2etats=(TEtatOuvert,TEtatFerme);
Je ne peux pas le faire uniquement parceque le compilateur me dit que l'identificateur est redéclaré.
Message du complio:Code:
1
2
3 TType3etats=(TEtatOuvert,TEtatFerme,TEtatPasAction); TType2etats=(TEtatOuvert,TEtatFerme);
Citation:
Identificateur redéclaré : 'TEtatOuvert'
Identificateur redéclaré : 'TEtatFerme'
Type incompatibles : 'TType3etats' et 'TType2etats'
Salut !
Et comme ça :Pas d'erreur de compil.Code:
1
2
3 type TType2etats=(TEtatOuvert,TEtatFerme); TType3etats=(Type2Etats,TEtatPasAction);
Mes 2 cts,
--
jp
Moi j'ai une erreur de compilation !!! :aie: Ce qui me parait logique d'ailleurs.Citation:
Envoyé par Jipété
@+
Comprenne qui peut... (D7 perso)Citation:
Moi j'ai une erreur de compilation !!!
Ceci étant, j'étais circonspect quant à ma réponse : me demande s'il n'y aurait pas déjà un problème de déclaration de ses types primaires, TEtatOuvert, etc.
À voir...
--
jp
Si les états de T2Etats ont vraiment le même sens que leurs correspondants dans T3Etats, tu peux faire ceci :
J'ai pas vérifié au compilo mais je pense bien que ça devrait fonctionner.Code:
1
2
3 type T3Etats = (EtatOff, EtatOn, EtatAucun); T2Etats = EtatOff..EtatOn;
Sinon, s'ils n'ont pas la même significations : change de nom ;) C'est plus logique, plus lisible, et... Ca fonctionne :mrgreen:
Ca compile sans problème, et les limites d'étendu sont respectées. Gagné !Citation:
Envoyé par sjrd
@+ Claudius
'Soir !
Oui, ça compile aussi, mais j'aimerais bien qu'on m'explique (je ne veux pas mourir idiot, :mouarf:) : quand on se déclare un type perso, il va contenir des trucs qui doivent bien être d'un certain type, déjà connu, non ?
Et d'où est-ce qu'il connait EtatOff, EtatOn, et EtatAucun, le compilo ?
Merdum, un truc m'échappe, :koi: merci d'éclairer ma lanterne,
--
jp
on aurrait pu ecrire aussi
F1 sur le mot sets pour des explications...Code:
1
2
3 T3Etats = set of (EtatOff, EtatOn, EtatAucun); T2Etats = EtatOff..EtatOn;
J'ai l'impression que le compilateur remplace les mots qu'on utilise par des
chiffres...(0 à 255) ca devient alors pour les humains que nous sommes
plus sympatique de travailler avec EtatOff, EtatOn, et EtatAucun qu'avec 0,1 et 2...
Bon sang mais c'était bien sûr ! :oops:
Merci, Éric.
--
jp
Non, ça n'est pas la même chose ! Ici tu déclares T3Etats comme un ensemble. Alors qu'on veut une simple énumération ;)Citation:
Envoyé par Eric Boisvert
+1 sjrdCitation:
Envoyé par sjrd
il y a effectivement une bonne différence entre les deux!
Je suis aller un peu vite pour celle là! :aie: Désolé!
À titre d'exemple, avec cette declaration:
une variable défini comme T3Etat pourait être à la fois EtatOff et EtatOnCode:
1
2 T3Etats = set of (EtatOff, EtatOn, EtatAucun);
et ce qui n'est sûrment pas l'éffet voulu ici.Code:
1
2
3
4
5 var Test:T3Etats; begin Test:=[EtatOff, EtatOn];
pour comprendre le code de sjrd :
Un exemple faux, mais qui aide
Code:
1
2
3 type byte=(0,1,2,3,4,5,6,7,8,...,252,253,254,255); //tous les chiffres d'un byte sont déclarés en même temps que le type lui même pourcent=0..100; //réutilisation de ce qui à déjà été déclaré
Autre exemple :
Code:
1
2
3 type semaine=(Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi, Dimanche); //les chiffres sont déclarés en même temps que le type byte WeekEnd=Samedi..Dimanche; //réutilisation de ce qui à déjà été déclaré
Okc 'est parfait je vous remercie a tous.
salut
tu as d'autre possibilite
par exemple tu peut utiliser ton enumeration
et le transformer en ensembleCode:TType3etats=(TEtatOuvert,TEtatFerme,TEtatPasAction);
une fois tes ensemble former tu peut y retirer ou y incluer des elements preexistantCode:TTypEtats = set of TType3etats
exemple
Code:
1
2
3 Exclude(TTypEtats,TEtatPasAction); ... include(TTypEtats,TEtatPasAction);
@+ Phil