IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Problème de Champ Variant


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème de Champ Variant
    Bonjour tout le monde,

    Voilà je suis confronté à un problème sur la déclaration de champ variant, puisque je ne peux déclarer 2 variables de même nom dans 2 cas différents ! Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     type Nature = (INT,FLOAT);
          Nombre = record
             case nat : Nature of
               INT   : (val : integer); 
               FLOAT : (val : real)
          end;
    et j'ai le droit à un magnifique "Duplicate Identifier (val)" , je ne comprends pas j'ai vu de nombreux codes dans lesquels le même nom était utilisé dans différents cas pourtant.

    Je précise que j'utilise Turbo Pascal 7, sous Windows. Merci d'avance !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par Xunkar
    Bonjour tout le monde,

    Voilà je suis confronté à un problème sur la déclaration de champ variant, puisque je ne peux déclarer 2 variables de même nom dans 2 cas différents ! Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     type Nature = (INT,FLOAT);
          Nombre = record
             case nat : Nature of
               INT   : (val : integer); 
               FLOAT : (val : real)
          end;
    et j'ai le droit à un magnifique "Duplicate Identifier (val)" , je ne comprends pas j'ai vu de nombreux codes dans lesquels le même nom était utilisé dans différents cas pourtant.

    Je précise que j'utilise Turbo Pascal 7, sous Windows. Merci d'avance !
    J'ai un sérieux doute sur ton affirmation, là.

    C'est tout simplement interdit par le langage standard.
    Pour t'en convaincre, prenons le cas de ton record.
    On a du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    var
      v1,v2 : Nature;
    begin
    ...
     // on veut adresser la partie INT
     v1.val := 1;
     // et ici la partie FLOAT
     v2.val := 1;
     // ne pas oublier que la représentation de la valeur 1 est différente selon
     // qu'il s'agit d'un entier ou d'un réel.
    ...
    comment veux-tu que le compilateur devine ce que tu veux faire, s'il autorisait le même nom selon le cas ?


    LA solution est d'utiliser des noms différents. Est-ce si difficile ? De plus, à la lecture, ça permet de savoir immédiatement quelle valeur tu utilises.
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    C'est tout simplement interdit par le langage standard.
    Arf, mon prof aura oublié de le préciser... De plus en faisant quelques recherches sur internet j'ai découvert certaines pages qui présentaient du code avec cette erreur : Voir bas de page.

    Ton exemple ne laisse pas de doute en tout cas Merci beaucoup !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Vu le code proposé sur la page de ton lien, c'est clairement un site à éviter
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/11/2005, 12h04
  2. Problème de champs Paradox type : mémo formaté
    Par mjp dans le forum Bases de données
    Réponses: 6
    Dernier message: 05/04/2005, 21h13
  3. Problème de champs texte
    Par Benjamin76 dans le forum Access
    Réponses: 1
    Dernier message: 07/01/2005, 11h13
  4. Problème de champs vierge dans un regroupement
    Par GrisburT dans le forum Oracle
    Réponses: 8
    Dernier message: 09/12/2004, 11h08
  5. [CR7][VB6]Problème de champs
    Par jcdupayage dans le forum SDK
    Réponses: 5
    Dernier message: 19/07/2004, 14h54

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