begin process at 2012 05 30 10:35:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Utilisation d'un reinterpret_cast ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation d'un reinterpret_cast ?

jeudi 15 avril 2010 à 10:23:45 | Utilisation d'un reinterpret_cast ?

romain60112

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);

CProgressCtrl *pProgressz1 =static_cast<CProgressCtrl *>(GetDlgItem(IDC_PROGRESSZ1));
CProgressCtrl *pProgressz2 =static_cast<CProgressCtrl *>(GetDlgItem(IDC_PROGRESSZ2));

pProgressz1->SetRange(0, CalcZones);
pProgressz1->SetPos(Zone1);

Les soucis :

warning C4244: 'argument' : conversion de 'unsigned __int64' en 'short', perte possible de données
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::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 ?

Cordialement
Romain
jeudi 15 avril 2010 à 11:11:36 | Re : Utilisation d'un reinterpret_cast ?

CptPingu

Administrateur CodeS-SourceS
Utilise par ordre de préférence les casts suivants:
- static_cast
- reinterpret_cast
- C cast

Je ne peux pas t'aider plus, je ne suis pas calé sur les MFC.

_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
vendredi 16 avril 2010 à 12:39:01 | Re : Utilisation d'un reinterpret_cast ?

theneoiceman



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)

++
Mess with the best, die like the rest
vendredi 16 avril 2010 à 13:37:42 | Re : Utilisation d'un reinterpret_cast ?

romain60112

Le problème de l'erreur est résolue merci !!

Et maintenant pour le warning :

unsigned long int Zone1; // de 0 à FF FF FF
unsigned long int Zone2; // de 0 à FF FF FF
unsigned long int Zone3; // de 0 à FF FF FF

CalcZones = Zone1+Zone2+Zone3;

pProgressz1->SetRange(0, CalcZones); // warning C4244

warning C4244: 'argument' : conversion de 'unsigned __int64' en 'short', perte possible de données

Cordialement
Romain
vendredi 16 avril 2010 à 14:20:44 | Re : Utilisation d'un reinterpret_cast ?

theneoiceman

Réponse acceptée !

Pour ton warning et vu la taille de tes variables (> taille d'un short) je te conseille d'utiliser plutôt la méthode SetRange32() comme suit :

pProgressz1->SetRange32(0, (int)CalcZones); // warning C4244

Cela réglera ton warning.

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(...)



++
Mess with the best, die like the rest


Cette discussion est classée dans : conversion, unsigned, cast, ff, reinterpret


Répondre à ce message

Sujets en rapport avec ce message

conversion constante en hexa ->unsigned long ou int ??? [ par andrealphus ] 4ndr&@lphu$rebonjour à tous et toutes,mon nouveau probleme est ridicule mais gênant...comment peut on convertir un nombre hexadécimal (du style l'adre Probleme de conversion [ par allo8086 ] Salut tous le mondeEnfet, je veux convertir une chaine de caratere lue a partir d'un fichier texte en unsigned char.A propos j'ai essayé de passer pa Conversion de unsigned char en float (17.6E) [ par lemenager ] Bonjour,Je dois lire un fichier binaire dans lequel il y a des float en format (17.6E). J'ai l'impression que je suis oblige de les lires en unsigned PB DIALOGBOX (Win32) [ par moustachu ] Bonjour,Je dois recréer des projets VC++6.0 à partir des fichiers dont je dispose. Le problème se pose avec un fichier chgmod.rc. J'arrive bien à l'ou Conversion unsigned short ---> char * [ par nemmezis ] Salut tout le monde,Ben tout est dit dans le titre; j'ai en fait besoin de convertir un unsigned short en char* afin de pouvoir le concaténer dans un problem avec waveInOpen [ par hicheri ] salut,j'essaye de transformer un programme d'enregistrement de la voix  du C au C++, je suis bloqué sur un probleme de cast. voila un bout de mon prog Pointeur cast [ par gwenChina ] Bonjour a tous,J'ai en fait un petit probleme avec un message que le compilateur me renvoie: [Warning] assignment makes pointer from integer without a conversion en unsigned long [ par flatou ] voila j'ai un type de donnée défini comme suit :typedef unsigned long long my_ulonglong;#endifc'est un type de donnée MySQL. Or j'ai vu que pour utili Héritage multiple et reinterpret_cast [ par vecchio56 ] C'est une des premières fois que je me frotte à l'héritage multiple, et je me trouve devant un petit problème: Je prends un exemple très simple: clas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales