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++/CLI Discussion :

Probl�me bizarre en mode Release


Sujet :

C++/CLI

  1. #1
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut Probl�me bizarre en mode Release
    Bonjour,

    J'ai probl�me bizarre en mode Release.
    Le code est identique.

    Voici la fonction. Elle a pour but d'afficher une boite de dialogue pour rechercher un fichier pour ensuite r�cup�rer le nom du fichier s�lectionn� par l'utilisateur.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private: System::Void butLOAD_Click(System::Object *  sender, System::EventArgs *  e)
    {
      System::Windows::Forms::DialogResult result;
     
      result = ofdLIC->ShowDialog();
      if (DialogResult::OK == result)
      {
         IntPtr p = Marshal::StringToHGlobalAnsi(this->ofdLIC->FileName);
         char *fn = reinterpret_cast<char*>(static_cast<void*>(p));
         System::Runtime::InteropServices::Marshal::FreeHGlobal(p);
        ...
      }
    ofdLIC est un openfiledialog.

    En mode Debug, fn est bien rempli alors qu'en mode Release fn est toujours null.

    Est ce que quelqu'un aurait une id�e ?

    Merci d'avance

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    je me demande bien pourquoi tu utilises un char * ... enfin bon, admettons.

    Mais tu le lib�res juste apr�s l'avoir allou�, il faut l'utiliser avant le FreeHGlobal

  3. #3
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut Probl�me bizarre en mode Release
    Bonjour,

    En fait j'ai besoin du char * car, j'appelle une fonction d'un dll mfc qui ne prend que des char *.

    Par ailleurs, j'essaie d'appeler cette fonction avant de faire FreeHGlobal. Je ne l'ai pas indiqu� dans mon pr�c�dent message.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
         IntPtr p = Marshal::StringToHGlobalAnsi(this->ofdLIC->FileName);
         char *fn = reinterpret_cast<char*>(static_cast<void*>(p));
         DllFunc_CreateConfigFile(fn);
         ....
         System::Runtime::InteropServices::Marshal::FreeHGlobal(p);
    J'ai mis �galement un point d'arr�t sur la ligne char * fn = ... et l� fn est bien null !

    �a peut �tre quoi le probl�me ? car �a fonctionne bien en mode Debug.
    Le probl�me reste identique m�me si j'enl�ve la ligne FreeHGlobal.

    Merci d'avance.

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    un probl�me de m�moire peut occasionner des diff�rence entre debug et release
    moi j'utilise
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char* chaineChar = static_cast<char *>(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(chaineManagee).ToPointer());
    Pour la conversion

    apr�s ... ofdLIC->FileName vaut bien quelque chose ?

    tu as bien besoin d'un char * ? pas un TCHAR ?

  5. #5
    Membre confirm� Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Par d�faut Encore quelquechose de louche
    Bonjour,

    J'ai appliqu� ta m�thode et l� encore il y a quelque chose de bizarre.

    Voici ce que j'ai fait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    char *fn;
    fn = static_cast<char *>System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(ofdLIC->FileName).ToPointer());
    DllFunc_CreateConfigFile(fn);
    J'ai mis en place un point d'arr�t et voila ce qui se passe.
    Juste apr�s avoir pass� la ligne fn = ..., j'ai essay� de visualiser le variable fn avec un espion express et l� j'ai : fn erreur : l'identificateur 'fn' est hors de port�e. Pourtant je suis bien dans la m�me fonction.

    Est ce que le probl�me pourrait venir de mon ofdLIC (OpenFileDialogue) ?
    Lors du debug, ofdLIC->FileName a bien le chemin du fichier que j'ai s�lectionn�.
    C'est compl�tement imcompr�hensible.

Discussions similaires

  1. Probl�me de mutex en mode release
    Par fredppp dans le forum C++/CLI
    R�ponses: 3
    Dernier message: 05/11/2010, 20h26
  2. Probl�me "ON_CONTROL_RANGE" mode release
    Par BoyzInDaProject dans le forum MFC
    R�ponses: 5
    Dernier message: 11/05/2007, 17h24
  3. probl�me en mode release
    Par Polux95 dans le forum Qt
    R�ponses: 20
    Dernier message: 25/04/2007, 09h58
  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

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