|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
Bonjour tous le monde,
J'ai deux classes NppExec et xmlConfig. La classe XMLConfiguration assure le parsing d'un fichier xml. Dans ls classe NppExec il y a appel d'une méthode de la classe XMLConfiguration. Cette méthode prend en paramètre une variable de type TCHAR* Le problème est que la valeur de cette variable est perdu suite à l'appel de cette méthode. Le code de NppExec.cpp est le suivant: Code :
Code :
Merci pour votre aide |
||||
|
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Comment la valeur se perd-elle exactement? Est-ce que le pointeur change, ou est-ce que le contenu de la zone est altéré?
Par ailleurs, au retour de l'appel, est-ce que la variable d'origine est OK? |
|
|
00
|
|
|
#3 |
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
Non le pointeur ne change pas et la valeur est perdu au retour de l'appel.
En effet, Avant l'appel de la méthode _XMLConfig.GetAGSBloc(str_iNameAGSBloc) la valeur est : str_iNameAGSBloc 0x000e0c70 "Filtre_Anti_Rebond" wchar_t * 70 L'F' wchar_t Après l'appel le résultat du debug est: str_iNameAGSBloc 0x000e0c70 "쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌쳌⬰ƙ쳌쳌쳌쳌" const wchar_t * 52428 L'쳌' const wchar_t |
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Je ne vois pas de raison pour que le buffer soit corrompu à ce moment précis. Sauf si en fait ce n'est pas à l'appel, mais par exemple à l'initialisation de _XMLConfig, comment cette référence est-elle définie? Peut-être le chargement du XML produit-il un débordement de buffer qui écrase la zone pointée par str_iNameAGSBloc?
|
|
|
00
|
|
|
#5 |
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
apparemment le problème est dans le type TCHAR* de la variable. J'ai essayer de passer en paramètre une autre variable de type string et sa valeur reste intacte.
Est ce qu'il existe une méthode pour changer le type de ma variable de TCHAR* en string? Merci d'avance |
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Ça me fait penser à de l'incohérence à cause d'une recompilation partielle, as tu changé ce type en cours de route?
|
|
|
00
|
|
|
#7 | ||
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
Wé Wé Wé c'est résolu
![]() En fait j'avais raison. Le problème était dans le type TCHAR* J'ai trouvé comment se fait la conversion de TCHAR* en string et l'exécution de mon code se passe bien. Pour info: la cast de TCHAR* en string se fait de cette manière: Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Eric Inscription : décembre 2010 Messages : 254 ![]() |
Je pense que tu avais un problème annexe qui a été résolu au passage (p ex en forçant une recompilation), car je ne vois pas pourquoi transmettre un pointeur sur TCHAR serait un problème en soit...ceci dit tant que tu n'as plus ton problème.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com