romain60112
Messages postés70Date d'inscriptionmercredi 1 octobre 2008StatutMembreDernière intervention17 avril 2013
-
15 avril 2010 à 10:23
theneoiceman
Messages postés78Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 avril 2010
-
16 avril 2010 à 14:20
Bonjour,
J'ai un petit soucis de conversion, voici mon problème :
CString m_tempsminz1;
unsigned long int Zone1; // de 0 à FF FF FF
unsigned long int Zone2; // de 0 à FF FF FF
unsigned long int CalcZones
CalcZones = (Zone1+Zone2);
warning C4244: 'argument' : conversion de 'unsigned __int64' en 'short', perte possible de données
error C2664: 'void ATL::CStringT::Format(const wchar_t *,...)' : impossible de convertir le paramètre 1 de 'const char [3]' en 'const wchar_t *'
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
Quels solutions me proposez vous pour résoudre le warning et l'erreur ?
De plus, encore en me basant sur le code que tu as écrit je te conseillerai plutôt de faire des déclarations en int comme suit :
int Zone1; // de 0 à FF FF FF
int Zone2; // de 0 à FF FF FF
int Zone3; // de 0 à FF FF FF
(la somme des 3 valeurs max sera au pire de 02 FF FF FD qui tient aussi sur un (int) donc pas de problème a priori.
De cette manière tu n'auras même plus besoin de caster ton paramètre en (int) lors de l'appel à SetRange32(...)
theneoiceman
Messages postés78Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 avril 2010 16 avril 2010 à 12:39
Question : quand appelles tu la méthode "Format" ? Cela n'apparait pas sur ton code.
Essaie d'etre précis sur les lignes incriminées par le warning et l'erreur sinon on va pas s'en sortir.
Pour ton erreur en tout cas lors de l'appel à Format(...) tu as juste à entourer ta chaine de caractères passée en premier argument par la macro TEXT(...) (ex : TEXT("%d"))
OU
tu rajoutes un L juste devant la même chaine de caractères (ex : L"%d") et ton erreur sera réglée.
Pour le warning, merci d'indiquer la ligne incriminée (idem pour l'erreur histoire de confirmer ce que je viens de dire)