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:
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
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:
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.
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:
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.