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 Delphi Discussion :

Problème de classes, types, variables


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème de classes, types, variables
    Bonjour,
    Je suis en train de développer une application dans laquelle j'ai le bout de code suivant:
    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
    18
     
    unit UnitMyTypes;
     
    interface
     
    const
      MyBool: array [0..1] of String =
             (
             'False',
             'True'
             );
     
    ...
     
    type
      ControlField = record
        cfBool: MyBool;
      end;
    J'ai plein d'autres déclarations comme celle ci.

    Lorsque je compile le project, j'ai le message d'erreur:
    E2007 Constante ou identificateur de type attendu.
    Pourriez-vous me dire où je fais une erreur ? Je ne trouve pas.

    Merci d'avance,

    Jérôme
    Dernière modification par Invité ; 17/08/2012 à 08h44. Motif: Résolu

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type
      ControlField = record
        cfBool: // ici, il attend un type pour cfBool ; or MyBool est une constante
      end;
    Il faut déclarer cfBool de type Booléen, string, entier ou celui qui te conviendra.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ah mince, je ne peux pas utiliser une constante comme c'est écrit dans le message d'erreur ?

    E2007 Constante ou identificateur de type attendu.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    type
      TMyCfBool = array[0..1] of string;
     
    const
      MyBool : TMyCfBool = ( 'False', 'True' );
     
    type
      TControlField = record
        cfBool: TMyCfBool;
      end;
    à tester, pour que le champ cfBool et la constante MyBool soient du même type et que le compilateur permette ensuite l'affectation TControlField.cfBool := MyBool;

    Mais, à quel besoin précis cela répond-il ?

    Est-il possible d'avoir l'affectation à une logique inverse ? Sinon, pourquoi ne pas seulement stocker 0 ou 1 qui serviront d'indice dans le tableau constant ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    A noter qu'il est aussi possible de modifier les variables TRUEBoolStrs et FALSEBoolStrs pour une utilisation avec BoolToStr (StrToBool) à travers toute l'application

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      SetLength(TRUEBoolStrs, 1);
      TRUEBoolStrs[0] := 'Oui';
      SetLength(FALSEBoolStrs, 1);
      FALSEBoolStrs[0] := 'Non';
    ...
      Caption := BoolToStr(TRUE, TRUE);

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci, je vais le tester demain.

    En fait, je crée un programme pour décrypter une trame série capturée.
    Le protocole utilisé est l'IEC 60870, pour info.
    C'est un protocole pour lequel il existe des types, des sous types, des sous sous types... qui correspondent à des états donnés.

    Il y a par exemple des codes fonction, de 1 à 127, pour lesquels je vais écrire la signification en dur dans le programme dans une liste.
    La constante de type Array of string dans lequel je stocke ces textes.
    J'appelle le texte selon l'index dans la liste.

    J'ai peut être pris le mauvais exemple avec le booléen car il existe déjà comme tu l'as écrit plus haut.

    Merci en tout cas.

    Jérôme

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    type
      TMyCfBool = array[0..1] of string;
     
    const
      MyBool : TMyCfBool = ( 'False', 'True' );
     
    type
      TControlField = record
        cfBool: TMyCfBool;
      end;
    à tester, pour que le champ cfBool et la constante MyBool soient du même type et que le compilateur permette ensuite l'affectation TControlField.cfBool := MyBool;

    Mais, à quel besoin précis cela répond-il ?

    Est-il possible d'avoir l'affectation à une logique inverse ? Sinon, pourquoi ne pas seulement stocker 0 ou 1 qui serviront d'indice dans le tableau constant ?
    Cela fonctionne, merci !!

  8. #8
    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 : 56
    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
    tu peux utiliser un type énuméré auquel tu associes un texte

    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
    18
    19
     
    type
      TEtat = (
       etat_online,
       etat_offline,
       etat_gere
      );
     
    const
      NomEtat : array[TEtat] of string = (
       'online',
       'offline',
       'gere'
      );
     
      NomBool: array[Boolean] of string = (
       'False',
       'True'
      );
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ah oui, c'est pas mal comme ça aussi !
    Merci Paul.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 04/07/2009, 09h59
  2. problème d'overflow avec variable type double
    Par ben83 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 15/02/2007, 09h55
  3. [POO] Problème de classe : Variables empty ?
    Par Steph_SOUMIER dans le forum Langage
    Réponses: 8
    Dernier message: 30/01/2007, 11h52
  4. Problème avec les types de variable
    Par binhjuventus dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/07/2006, 12h30
  5. Réponses: 1
    Dernier message: 27/07/2005, 17h08

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