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

C Discussion :

Une de mes variables n'est pas reconnue mais pourtant déclarée


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Une de mes variables n'est pas reconnue mais pourtant déclarée
    Bonjour tout le monde,

    Je suis occupé sur un exercice qui s'est bien déroulé depuis ce matin mais j'ai maintenant un problème.

    Je déclare une variable de type char* nommée VinTrouve.

    Je lis dans un fichier xml, je suis au bon endroit donc dans la bonne balise, dans le bon attribut et je veux donc copier la valeur de l'attribut dans ma variable VinTrouve.

    Il me donne alors ces deux messages :

    'VinTrouve' : undeclared identifier
    '=' : cannot convert from 'char *' to 'int'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    Error executing cl.exe.
    Voici la partie de code qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TXmlElement& E3 = Doc.Elements.Tableau[nE3];
    if ( (E3.IndiceParent == nE2) && (strcmp(E3.Nom,"avis") == 0) )
      char* VinTrouve = NULL;
      for (nA=0; (nA < Doc.Attributs.Nombre) &&                                                                           (Doc.Attributs.Tableau[nA].IndiceElement < nE3); nA++);
    for (; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement == nE3); nA++)
    {
    	TXmlAttribut& A = Doc.Attributs.Tableau[nA];
    	if (strcmp(A.Nom,"nom_du_vin") == 0) VinTrouve = A.Valeur;
    Je mets une copie du fichier xml en copie (la partie qui nous intéresse seulement) :

    • <oenologie> est la racine donc le niveau 0
    • <oenologues> est l'enfant direct de la racine, donc niveau 1
    • <oenologue> est l'enfant direct de oenologues, donc niveau 2
    • <avis> l'enfant direct de oenologue donc niveau 3



    dans <avis>, je veux voir si le nom passé à la fonction est le même que celui trouvé dans la balise "avis".

    Je vous mets aussi le code en entier, ça sera alors plus facile.

    Un super grand merci d'avance.

    beegees

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Ce code n'est pas du C mais du C++.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TXmlElement& E3 = Doc.Elements.Tableau[nE3];
    Souhaites-tu que je déplace dans le bon forum ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,

    Si tu veux déplacer, tu es le modérateur, tu le fais mais sache que je n'aurais alors pas de réponse à ma question.

    Je ne savais quand même pas que realloc était du c++.

    Bon Dimanche.

    beegees

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par beegees Voir le message
    Bonjour,

    Si tu veux déplacer, tu es le modérateur, tu le fais mais sache que je n'aurais alors pas de réponse à ma question.

    Je ne savais quand même pas que realloc était du c++.
    C'est utilisable en C++ alors que les références ne sont pas utilisables en C.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    La variable VinTrouve à une portée (scope) limitée au if sous lequel elle se trouve !

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    TXmlElement& E3 = Doc.Elements.Tableau[nE3];
     
    if ( (E3.IndiceParent == nE2) && (strcmp(E3.Nom,"avis") == 0) )
    	char* VinTrouve = NULL; /* limitée au if ci-dessus */
     
    /* VinTrouve n'existe plus à partir d'ici */
     
    for (nA=0; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement < nE3); nA++);
     
    for (; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement == nE3); nA++)
    {
    	TXmlAttribut& A = Doc.Attributs.Tableau[nA];
    	if (strcmp(A.Nom,"nom_du_vin") == 0) 
    		VinTrouve = A.Valeur;

    Solution : Mettre des crochets (brackets '{ }') là où cela s'impose ou déplacer la variable pour que sa portée soit sur toute la fonction.

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Neitsa,

    Merci pour ta réponse pertinente.

    En effet le problème était situé à ce niveau.

    S'est super, je continue.

    Á bientôt.

    beegees

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par diogene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( ... )
      char* VinTrouve = NULL;
    Cette ligne est incorrecte. On ne peut pas définir une variable dans l'instruction suivant le if (ce n'est pas un bloc d'instructions)

    Merci Diogene,

    Tu étais dans le bon aussi

    @+

    beegees

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

Discussions similaires

  1. [AC-2003] Tester si une variable n'est pas un entier
    Par moilou2 dans le forum VBA Access
    Réponses: 20
    Dernier message: 10/08/2009, 10h28
  2. Réponses: 2
    Dernier message: 26/06/2008, 21h20
  3. Réponses: 13
    Dernier message: 05/05/2008, 13h45
  4. Réponses: 10
    Dernier message: 15/01/2008, 12h03
  5. La variable n'est pas reconnue
    Par Iori Yagami dans le forum Langage
    Réponses: 1
    Dernier message: 14/10/2007, 22h08

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