1. #1
    Membre éprouvé

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 624
    Points : 1 266
    Points
    1 266
    Billets dans le blog
    5

    Par défaut Comment définir une constante de type enregistrement ?

    Bonjour,

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Nom : Const_ARRAY.png
Affichages : 69
Taille : 9,0 Ko

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CONST Vzero:VectZ3 = (x: LongInt(12345));
    Le programme, complété en conséquence (après tout, ça ne mange pas de pain ) fonctionne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Nom : Const_RECORD.png
Affichages : 73
Taille : 9,6 Ko

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2002
    Messages : 2 608
    Points : 4 145
    Points
    4 145

    Par défaut

    salut

    as tu essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     TYPE VectZ3 = RECORD  x, y, z: LongInt  END;
     CONST Vzero:VectZ3 = (x:12345, y:45678,z: 78901);
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre éprouvé

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 624
    Points : 1 266
    Points
    1 266
    Billets dans le blog
    5

    Par défaut Comment définir une constante de type enregistrement

    J'avais essayé pas mal de variantes, mais pas celle-là.

    Malheureusement, le compliateur reste intraitable

    Nom : Error_89.png
Affichages : 29
Taille : 22,6 Ko_Nom : Er_89_Comment.png
Affichages : 29
Taille : 2,5 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  4. #4
    Membre éprouvé

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 624
    Points : 1 266
    Points
    1 266
    Billets dans le blog
    5

    Par défaut Comment définir une constante de type enregistrement


    En fait, c'était à peu de choses près la bonne réponse :

    Nom : Essai_3.png
Affichages : 30
Taille : 37,7 Ko

    qui trouve ici confirmation.

    Les indications du compilateur se sont comme souvent révélées trompeuses.
    Merci pour l'info , qui m'a donné l'occasion de découvrir un nouveau site de programmation.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment bien définir une constante +INFINI en c++
    Par touftouf57 dans le forum C++
    Réponses: 15
    Dernier message: 02/11/2012, 23h48
  2. Réponses: 7
    Dernier message: 06/05/2006, 15h24
  3. Réponses: 3
    Dernier message: 25/04/2006, 23h07
  4. Comment comment définir une clef primaire dans une table??
    Par nek_kro_kvlt dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/02/2005, 21h06
  5. Réponses: 8
    Dernier message: 20/12/2004, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo