2 pièce(s) jointe(s)
Comment définir une constante de type enregistrement ?
Bonjour, :D
J'ai rencontré récemment une difficulté de programmation aisément contournable, mais au sujet de laquelle je souhaiterais trouver une réponse claire.
La définition d'une constante de type Array a toujours conduit au résultat attendu:
Code:
1 2 3 4 5 6 7 8 9 10 11
| PROGRAM XXX;
USES Crt;
TYPE Lst3E = ARRAY[1..3] OF LongInt;
CONST Lzero: Lst3E = (12345, 45678, 78901);
BEGIN
TextColor(15);
WriteLn(Lzero[1]:9);
WriteLn(Lzero[2]:9);
WriteLn(Lzero[3]:9); ReadLn;
END. |
Pièce jointe 346335
Un blocage imprévu a cependant surgi le jour où j'ai codé par inadvertance une constante de type Record, soit pour résumer:
Code:
1 2
| TYPE VectZ3 = RECORD x, y, z: LongInt END;
CONST Vzero:VectZ3 = (12345, 45678, 78901); |
ce qui fait apparaître à la compilation le message d'erreur:
Error 44: Field identifier expected / The identifier does not denote a fied in the record or object variable.
Après plusieurs essais, je me suis résolu à me conformer strictement aux directives du compilateur, ce qui a conduit à la ligne tout à fait étonnante: :calim2:
Code:
CONST Vzero:VectZ3 = (x: LongInt(12345));
Le programme, complété en conséquence (après tout, ça ne mange pas de pain :aie:) fonctionne !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
PROGRAM XXX;
USES Crt;
TYPE VectZ3 = RECORD x, y, z: LongInt END;
CONST Vzero:VectZ3 = (x: LongInt(12345));
BEGIN
TextColor(15);
WriteLn(Vzero.x:9);
WriteLn(Vzero.y:9);
WriteLn(Vzero.z:9); WriteLn;
Vzero.y:= 45678;
Vzero.z:= 78901;
WriteLn(Vzero.x:9);
WriteLn(Vzero.y:9);
WriteLn(Vzero.z:9); ReadLn
END. |
Pièce jointe 346338
Existe-t-il une (ou des) instruction(s) permettant - avec une syntaxe appropriée - de définir proprement une constante de type enregistrement, ou faut-il se résoudre à la déclaration banale d'une variable supplémentaire, à laquelle on affectera les valeurs souhaitées ?
Code:
1 2 3 4 5
| VAR Vzero: VectZ3;
... / ...
WITH Vzero DO BEGIN
x:= 12345; y:= 45678; z:= 78901
END; |
Merci pour les éclaircissements que vous pourrez apporter: ce qui m'intrigue vraiment, c'est que la consigne jamais vue jusque là
ait un sens.
Ces questions sont peut-être liées aux échanges apportés sur un autre forum, mais cela m'a échappé.
2 pièce(s) jointe(s)
Comment définir une constante de type enregistrement
J'avais essayé pas mal de variantes, mais pas celle-là.
Malheureusement, le compliateur reste intraitable :ouin:
Pièce jointe 346404_Pièce jointe 346409
1 pièce(s) jointe(s)
Comment définir une constante de type enregistrement
:yaisse:
En fait, c'était à peu de choses près la bonne réponse :ccool::
Pièce jointe 346430
qui trouve ici confirmation.
Les indications du compilateur se sont comme souvent révélées trompeuses.
Merci pour l'info :D, qui m'a donné l'occasion de découvrir un nouveau site de programmation.