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

Langage Pascal Discussion :

[Modula-2] Structure CASE BOOLEAN


Sujet :

Langage Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Par défaut [Modula-2] Structure CASE BOOLEAN
    Bonjour à tous,

    Je n'arrive pas à comprendre cette structure
    Ce que je pense comprendre :
    Mon buffer va prendre plein de valeurs à la suite, selon qu'on lui affecte la valeur TRUE ou FALSE.
    MAIS ce qui m'embéte c'est le 2e test... que teste-t-on cette fois ? Une variable sans nom ? J'en doute fortement ! Peut-être que je fais fausse route depuis le début de mon raisonnement !
    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
    TIRecDCA2Buf  = POINTER TO RECORD
        CASE BOOLEAN OF
          TRUE : VRLengthMess,                                           
                 VRBitErrorEcho, 
                 VRTMR,                                         
                 VRAnnNum : CHAR;                                        
                 CASE BOOLEAN OF
                   TRUE :  VRTransTrapNum,				     
    	               VRContentsTrap,
    	               VROrigineTrap : CHAR;              
                 | FALSE : VRRecMessAr: TRTrapBuf   ; 
    	       ELSE
    	     END;
        | FALSE : VRRecepMessAr: TIRecBuffer;
         ELSE
        END;
      END;
    Aidez-moi svp !

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Bonjour,

    Je ne vois pas ce qui te trouble dans le 2ème cas, alors que tu acceptes le 1er, qui exactement similaire ?

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 478
    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 : 3 478
    Par défaut
    salut

    est tu sur de ta structure ?

    1°)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       TIRecDCA2Buf  = POINTER TO RECORD
        ...
       END;
    jamais vu comme définition

    ne serais ce pas plutot cela que tu veut ecrire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TIRecDCA2Buf  = RECORD 
    ... 
    END; 
     
    PTIRecDCA2Buf =^TIRecDCA2Buf
    2°) Les case imbriqué dans un record ne sont pas admis si je me souvient bien
    le case doit être la dernière instruction du record
    Par contre tu peut faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TIRecDCA2Buf  = RECORD
        CASE BOOLEAN OF
          TRUE : VRLengthMess,                                           
                     VRBitErrorEcho, 
                     VRTMR,                                         
                     VRAnnNum : CHAR;                                        
                     TRAP : RECORD  CASE BOOLEAN OF
                              TRUE  :  VRTransTrapNum,VRContentsTrap,VROrigineTrap : CHAR;              
                              FALSE : VRRecMessAr: TRTrapBuf   ;
    	         END;
          FALSE : VRRecepMessAr: TIRecBuffer;
         END;
      END;
    ce qui revient a faire

    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
     
     TTRAP : RECORD  CASE BOOLEAN OF
        TRUE  :  VRTransTrapNum,VRContentsTrap,VROrigineTrap : CHAR;              
         FALSE : VRRecMessAr: TRTrapBuf   ;
     END;
     
    TIRecDCA2Buf  = RECORD
        CASE BOOLEAN OF
          TRUE : VRLengthMess,                                           
                     VRBitErrorEcho, 
                     VRTMR,                                         
                     VRAnnNum : CHAR;                                        
                     TRAP : TTRAP;
          FALSE : VRRecepMessAr: TIRecBuffer;
         END;
      END;

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    la syntaxe de cette structure est étrange en effet, ça ressemble à du Pascal, mais rien que je connaisse.

    je suppose que c'est donc un pointeur sur une structure qui fusionne plusieurs format (union en C)

    la structure peux avoir trois formes différentes

    1)
    - VRRecepMessAr: TIRecBuffer

    2)
    - VRLengthMess : CHAR
    - VRBitErrorEcho: CHAR
    - VRTMR : CHAR
    - VRAnnNum : CHAR
    - VRTransTrapNum : CHAR
    - VRContentsTrap : CHAR

    3)
    - VRLengthMess : CHAR
    - VRBitErrorEcho: CHAR
    - VRTMR : CHAR
    - VRAnnNum : CHAR
    - VRRecMessAr: TRTrapBuf


    le CASE BOOLEAN OF permet simplement d'indiquer que le contenu de la structure est variable (au passage j'aime bien un "TRUE, FALSE, ELSE" sur un booléen )
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Octobre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 24
    Par défaut Merci à tous
    Merci à tous pour vos réponses, ça m'a grandement aide dans la comprehension du code (au passage, ce n'est pas exactement du pascal mais du modula 2, on m'avait dis qu'à mon niveau je ne verrai pas la difference).
    Je vous assure que ce code compile même si sa logique est parfois obscure pour moi
    Le faite que l'on me parle d'union (en reference au C pour moi) m'a fait un déclic!
    J'en conclue que c'est un embriquement de données à longueur variable (avec donc 2 union) selon certaines valeurs!
    Merci à tous pour votre aide!

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

Discussions similaires

  1. [LV2009] Structure Case
    Par Super2006 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 29/06/2010, 13h18
  2. probleme structure case
    Par monsieur77 dans le forum Linux
    Réponses: 4
    Dernier message: 07/11/2007, 12h14
  3. Créer un champ de type boolean au format case à cocher
    Par niano dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/10/2007, 18h38
  4. Cases à cocher : liées à un champs non boolean
    Par Tententai dans le forum Access
    Réponses: 4
    Dernier message: 08/08/2006, 17h21
  5. Structure CASE WHEN en Interbase
    Par tchaman dans le forum InterBase
    Réponses: 8
    Dernier message: 13/12/2004, 16h18

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