Historique des modifications - Message

Message #11076

Sujet: SpinBox et nombres à virgules floatantes...


TypeDateAuteurContenu
Création du message20-01-2013 17:52:39Akabane87
En fait je l'ai le sdk de dx9 mais il me demandait des fichiers .h de dx7 et 8 quand je compilais les sources d'irrlicht 1.7.3. Je viens de compiler irrlicht 1.8 sans problèmes avec juste le sdk dx9 donc du coup ce problème est réglé. Ceci dit j'ai rajouté aux directives de compil /Zi pour avoir les symboles d'irrlicht pour débugger correctement mais ça ne marche pas mieux. Visiblement il veut les pdb de la DLL et je ne sais pas comment les obtenir...

Du coup à la place j'ai debuggé à la warrior en filant directement à la spinbox diverses entrées bonnes ou mauvaises pour situer d'où vient le problème.
Et la conclusion est que c'est la fonction setValue() qui fait de la merde. J'ai mis un data breackpoint dans visual est la seule fonction qui modifie le texte de ma spinbox entre le moment où ma valeur est bonne et le moment où elle est fuckée est cette fonction.

Et si je refais manuellement le code du setValue il fonctionne correctement :

Code c++ :

					m_DialogSpeedSpinBox->getEditBox()->setText(L"1.00000");// je reset ma spin box à une valeur normale une fois le bug déclenché

					f32 val = m_DialogSpeedSpinBox->getValue();// ma valeur est correct ici : je refais manuellement le code du onevent de la spinbox quand on l'incrément 
					val += 0.1f;
					wchar_t str[100];
					core::stringw FormatString = "%.";
					FormatString += 5;
					FormatString += "f";

					// contenu du setValue de la spinBox
					swprintf(str, 99, FormatString.c_str(), val);
					m_DialogSpeedSpinBox->getEditBox()->setText(str);

					// appel au verifyValueRange();
					val = m_DialogSpeedSpinBox->getValue();
					if ( val+core::ROUNDING_ERROR_f32 < m_DialogSpeedSpinBox->getMin() )
						val = m_DialogSpeedSpinBox->getMin();
					else if ( val-core::ROUNDING_ERROR_f32 > m_DialogSpeedSpinBox->getMax() )
						val = m_DialogSpeedSpinBox->getMax();
					// tout est ok avec ce code 

					// par contre si je fais ça via la fonction setValue de la dll ça me donne un float fucké avec une virgule
					//m_DialogSpeedSpinBox->setValue(val);

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
99 invités en ligne
membre en ligne: -
RSS Feed