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

MFC Discussion :

Port�e de variable dans diff�rents projets


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut Port�e de variable dans diff�rents projets
    Voila j'ai sous un meme workspace diff�rents projets...

    j'ai une fonction sous un projet d�finie comme suit:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void displayMessage (char *i_Trame, char *nameMsg)
    {
    std::string strName;
    ....
     
    strName=msg->_name;
    size_t size = strName.size() + 1;
    nameMsg = new char[ size ];
    strncpy( nameMsg, strName.c_str(), size );
    }
    A l'execution de cette fonction j'ai bien la chaine souhait�e dans nameMsg

    J'appelle cette fonction d'un autre projet comme suit:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char *nomMessage;
    nomDeMonNamespace::displayMessage(trame,nomMessage);
    J'aimerai r�cup�rer la chaine nameMsg dans ce projet pour pouvoir la r�utiliser...

    Cependant apres quelques essais, je n'obtiens rien...
    On dirai que ma variable que j'ai pourtant pass� en parametre, ne veut pas sortir du premier projet...

    Je ss preneur de toutes remarques et �ventuels d�blocages....


  2. #2
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    J'aimerai r�cup�rer la chaine nameMsg dans ce projet pour pouvoir la r�utiliser...
    Alors il faut changer le prototype de ta fonction displayMessage.

    Si tu veux que nomMessage pointe sur nameMsg, il faut passer son adresse.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void displayMessage (char *i_Trame, char **nameMsg)
    {
       std::string strName;
       strName=msg->_name;
    
       size_t size = strName.size() + 1;
       *nameMsg = new char[ size ];
       strncpy( *nameMsg, strName.c_str(), size );
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char *nomMessage;
    nomDeMonNamespace::displayMessage(trame, &nomMessage);
    Sans oublier le delete [] nomMessage;

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    J'ai r�ussi � r�cuperer ma chaine de caracetere nameMsg comme ceci:

    Appel de la fonction:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    char *nomMessage= new char[200];   //// Variable permettant de récupérer le nom du message
    nomDeMonNamespace::displayMessage(trame,nomMessage);
    Ma fonction appel�e:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void displayMessage (char *i_Trame, char *nameMsg)
    {
    std::string nameMsg2;
    ....
     
    nameMsg2=msg->_name;
    size_t size = nameMsg2.size() + 1;
    char *temp = new char[ 200 ];
    strncpy( temp, nameMsg2.c_str(), 200 );
    strcpy(nameMsg,temp);
    }

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    Par contre je rencontre un nouveau probleme, j'aimerai que ma fonction me retourne un tableau dynamique de chaine...

    Ma fonction est la suivante

    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
    char ** displayMessage (char *i_Trame, char *nameMsg, int *lenghtMsg, char *tableauChamps)
    {
    char **tableauchaines;
     
    for (i=0;i<NbChamps;i++)
    {
    tableauchaines[i]=champs;  //// Remplissage du tableau de champs
    //// En mode debug, j'ai l'impression de constater que le remplissage se fait comme voulu...
    }
    .....
     
    for(i=0; i<NbChamps; i++)
    {
    /// Ici je souhaite tester si le tableau est effectivement bien rempli, mais la je m'apercois que seule le derniere chaine est presente
    printf("%s", tableauchaines[i]);
    }
     
    tableauchaines[NbChamps] = NULL;  //// Permet de marquer la fin du tableau
    return tableauchaines
    ;
    }

    Je ne sais pas vraiment comment faire....

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    Ao�t 2003
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 159
    Par d�faut
    Je ne suis pas s�r de vraiment comprendre ce developpement pas projets.
    M�me si des projets sont dans le m�me workspace, ils n'echangent pas forcement de donn�es entre eux.
    Sauf si par exemple le premier gen�re une librairie et le second utilise celle-ci.

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Ao�t 2003
    Messages
    159
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 159
    Par d�faut
    Trop de probl�mes dans ce code.
    A mon avis, un passage vers la FAQ C serait tr�s utile.
    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
    20
    21
     
    char ** displayMessage (char *i_Trame, char *nameMsg, int *lenghtMsg, char *tableauChamps)
    {
     
    //-- C'est très mauvais de retourner un pointeur..
    char **tableauchaines;  
     
    //-- utilisation d'un tableau sans initialisation (allocation dynamique)
    for (i=0;i<NbChamps;i++)
    {
    tableauchaines[i]=champs; //--? affectation de pointeurs à pointeurs ou copie de chaines de caractères ?
    }
    .....
     
    for(i=0; i<NbChamps; i++)
    {
    printf("%s", tableauchaines[i]); //? Normal, tableauchaines mal rempli.
    }
     
    tableauchaines[NbChamps] = NULL;  //--? inutile. il vaut mieux connaitre les dimensions de ton tableau.
    return tableauchaines;  //? OK mais effectuer un delete après.

Discussions similaires

  1. Port�e de variable dans un include
    Par geve2007 dans le forum Langage
    R�ponses: 2
    Dernier message: 17/03/2009, 14h45
  2. Utilisation d'une m�me variable dans diff�rents fonctions de Callback
    Par houjuventini dans le forum Interfaces Graphiques
    R�ponses: 1
    Dernier message: 16/11/2007, 08h58
  3. [XSLT] Port�e de variables dans un switch
    Par Xunil dans le forum XSL/XSLT/XPATH
    R�ponses: 2
    Dernier message: 14/08/2007, 13h29
  4. :: Port�e de variables dans une boucle ::
    Par lemilig dans le forum Flash
    R�ponses: 5
    Dernier message: 12/06/2007, 15h20
  5. Port� de variable dans un try except
    Par japey dans le forum G�n�ral Python
    R�ponses: 4
    Dernier message: 23/05/2007, 12h55

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