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

Visual C++ Discussion :

[VC 2008]Pb de fonctionement en mode Release


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 41
    Par défaut [VC 2008]Pb de fonctionement en mode Release
    Bonjour à tous,

    Je rencontre un souci et je commence à m'arracher les cheveux

    J'utilise la librairie Tinyxml dans une appli MFC (VS 2008) afin de lire et d'écrire dans un fichier de configuration XML.

    Tout fonctionne en config Debug.

    En release ça se gâte :

    L'appli fonctionne en mode développement, mais lorsque je lance le .exe j'ai cette fenêtre qui apparaît et mon appli se crache :

    http://imagik.fr/view-rl/201649

    J'ai vérifier les liens etc... je ne vois rien qui cloche, à la compilation j'ai juste ce warning :

    warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.

    help

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 41
    Par défaut
    Après avoir investigué je pense avoir ciblé le problème, cependant je bloque toujours, le souci viendrai apparement de cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void CConfigurationDlg::OnEnChangeEdit16()
    {
    	UpdateData(true);
    	CString Tel=m_Telephone.GetString();
    	m_Telephone = (LPCTSTR)_T("33")+m_Telephone.Right(9);
    	Tel = (LPCTSTR)_T("33")+m_Telephone.Right(9);
    	strcpy((char*)m_Setting_temp->xml.Module.moduleL7.Satellite.numtel, static_cast<const char*>((Tel.GetString ())));
    }
    Et plus précisément de la variable membre m_Telephonne, effectivement lorsque je commente la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Telephone = (LPCTSTR)_T("33")+m_Telephone.Right(9);
    , si je ne passe pas dans cette fonction le soft plante, si je passe dedant (autrement dis si je modifie mon edit box) alors le soft ne plante pas => problème j'aimerai comprendre pourquoi il me met "<Ptr> incorrect" lorsque j'espionne la variable m_Telephone...

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Si tu enlèves le cast sauvage (LPCTSTR), qu'as-tu comme warning ?
    Quel est le type de m_telephone ?
    Si tu enlèves static_cast<const char*>, qu'as-tu comme warning ?
    Je parie pour un problème ANSI<->UNICODE : Comment convertir des chaînes de caractères en ANSI et en UNICODE avec les MFC ? ou Comment effectuer les conversions de texte ASCII <-> Unicode ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 41
    Par défaut
    Salut,

    La variable m_Telephonne est une variable membre associée à un contrôle EditBox (CString).

    Si j'enlève le static_cast j'ai une erreur de compilation car la fonction strcpy prend un const char * en 2ème argument...

    C'est possible que tu ai raison, car les valeurs lues dans le xml sont au format unicode, cependant je rapatrie d'autre valeurs dans d'autre EditBox et je n'ai pas de problème, la seul différence c'est que la variable m_Telephone je dois faire un petit traitement qui rajoute "33" en préfixe...

    je dois mal m'y prendre au niveau des conversion

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 41
    Par défaut
    C'est bon j'ai trouvé, en fait je n'ai pas cherché au bon endroit, j'ai une fonction qui met à jour la textbox telephonne :

    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
    void CConfigurationDlg::DisplayLogiciel(CAppSetting *Setting)
    {
    	CString Tel_format;
    	   Tel_format.SetString(CString(Setting->xml.Module.moduleL7.Satellite.numtel));
    	Tel_format.SetString ( _T("0")+Tel_format.Right(9));//(LPCTSTR)
     
    	//Affichage des données de la partie configuration logiciel
    	m_Telephone.Format((Tel_format.GetString()));
     
    	m_RadioMode = atoi(Setting->xml.Module.moduleL7.mode.valeur) - 1;
    	m_RadioSat = atoi(Setting->xml.Module.moduleL7.Satellite.Liaisonsat);
     
    	UpdateData(false);
     
     
    }
    j'ai remplacé un strcpy par Tel_format.SetString et ça fonctionne, c'est vrai que je ne suis pas très à l'aise avec les manip de String je ne sais pas si c'est bien propre tout ça :/, enfin bon je mets pb résolu.

    Merci !

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    strcpy s'appuie sur des chaînes char* là où ton programme utilise des wchar_t pour l'unicode. Et on ne passe pas de l'un à l'autre avec un simple cast (cf les entrées de la F.A.Q de mon précédent post)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/07/2009, 12h07
  2. Pas d'appel à une fonction si mode Release
    Par Crisanar dans le forum C++
    Réponses: 8
    Dernier message: 17/09/2005, 04h54
  3. Réponses: 11
    Dernier message: 09/07/2005, 08h47
  4. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39
  5. bloqué en mode Release
    Par matsch77 dans le forum MFC
    Réponses: 3
    Dernier message: 07/01/2004, 17h17

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