begin process at 2012 05 30 08:05:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

[unicode] Convertir CString en Char[]


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

[unicode] Convertir CString en Char[]

mardi 30 mai 2006 à 16:01:42 | [unicode] Convertir CString en Char[]

nitrique

Bonjour,

Selon toutes les sources que j'ai pu voir, ça devrait être correct:

char  *ptr,temp[MAX_LOADSTRING];
CString strValue;
ptr = temp;
... CODE ...
if (strValue.GetLength()>0) {
SendMessage(hEdtT,EM_SETSEL,TextLen,TextLen); // Placer le curseur à la fin
SendMessage(hEdtT,EM_REPLACESEL,0,(LPARAM)(LPCTSTR)strValue); // Ecrit le texte
TextLen += strValue.GetLength();

/*WideCharToMultiByte(CP_ACP,0,strValue,-1,temp,wcslen(strValue)+1,NULL,NULL); // CString->char
strValue.Format(L">%s<",temp);
SendMessage(hEdtT,EM_SETSEL,TextLen,TextLen); // Placer le curseur à la fin
SendMessage(hEdtT,EM_REPLACESEL,0,(LPARAM)(LPCTSTR)strValue); // Ecrit le texte
TextLen += strValue.GetLength(); // */
}

Le premier affichage marche bien tout seul, mais dès que je met le reste du code (ce qui est commenté) ça pête (pleins de caractères bizzares) !

Pourquoi ça ne marche pas ?

David, à VERSAILLES
[ Lien ]
mardi 30 mai 2006 à 16:23:04 | Re : [unicode] Convertir CString en Char[]

excrt

ton « strValue.Format(L">%s<",temp); » s'attend a recevoir un « wchar_t* » et tu lui envois un « char* »
tu devrais plutôt convertir ton « char temp[...] » en wchar_t

char  *ptr, temp[MAX_LOADSTRING];
wchar_t wtemp[MAX_LOADSTRING]; //- wide version
CString strValue;

ptr = temp;
//- ... CODE ...

if (strValue.GetLength() > 0)
{
  SendMessage(hEdtT, EM_SETSEL, TextLen, TextLen);
  SendMessage(hEdtT, EM_REPLACESEL, 0, (LPARAM)(LPCTSTR)strValue);
  TextLen += strValue.GetLength();

  //- char to wchar_t
  MultiByteToWideChar(CP_ACP, 0, temp, -1, wtemp, strValue.GetLength() + 1, NULL, NULL);
  strValue.Format(L">%s<", wtemp);

  SendMessage(hEdtT, EM_SETSEL, TextLen, TextLen);
  SendMessage(hEdtT, EM_REPLACESEL, 0, (LPARAM)(LPCTSTR)strValue);
  TextLen += strValue.GetLength();
}

-=-= ExCRT =-=-
mardi 30 mai 2006 à 16:27:34 | Re : [unicode] Convertir CString en Char[]

nitrique

Bonjour excrt,

Le but est justement de le caster en tableau de char pour le passer ensuite à une fonction qui attend ce type en parametre.

[;)] David, à VERSAILLES
[ Lien ]
mardi 30 mai 2006 à 18:19:44 | Re : [unicode] Convertir CString en Char[]

excrt

oooohhhhh!!!! plus de précision stp ...

ton CString == « wchar_t » et tu veux lui faire formater du « char », converti ton « char » en « wchar_t » et lance ton .Format() _ensuite_

c'est normal d'avoir des caractères bizarre, un « wchar_t » == deux « char »

sizeof(char) >> 1
sizeof(wchar_t) >> 2

//- abc
char ac[] = {0x41, 0x42, 0x43, 0x00}; //- trois caractères plus le nul( 0x00 == \0 )
wchar_t* wc = (wchar_t*)ac; //- {0x4142, 0x4300} == DEUX caractère sans le nul( \0 )
//- wcout ==>> wide cout
wcout << wc << endl;
//- plutôt que d'afficher « abc », il va afficher « DES CARACTÈRES BIZARRES »

donc: conversion, conversion, conversion, conversion, ...
pour le reste, soit plus claire!

MultiByteToWideChar()/WideCharToMultiByte() sont simple a utiliser, je vois pas
ou est le problème ...

en passant, moi j'ai répondu a cette question:

//- Le premier affichage marche bien tout seul, mais dès que je met le reste du code (ce qui est commenté) ça pête (pleins de caractères bizzares) !
//- Pourquoi ça ne marche pas ?

-=-= ExCRT =-=-


Cette discussion est classée dans : sendmessage, char, cstring, strvalue, textlen


Répondre à ce message

Sujets en rapport avec ce message

Comment passer un CString en Char ??? [ par Bringdal ] Comment passer un CString en Char ???exemple : pour récupérer un chemin d'acces en vue d'une éxécution du fichier sélectioné par le user.CString Chemi convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci CString en char * [ par AryCooL ] Bonjour a tous,j'ai un probleme et je voudrais savoir comment convertir un CString en char* si c'est possible.Sinon comment peut-on serialiser une cha lecture de chaine de char dans un fichier .doc [ par talaron ] salutj'ai besoin d'un ptit coup de main informatiquedans un programme j'enregistre 3 tablo dans un fichier .txt ou .doc les deux premiers sont des tab impression de Cstring. [ par talaron ] J'arrive à imprimer des chaines de charactères comme ceci :char *p;char resultat[]=" Resultat:";p=resultat;while( (*p != '\0') && fputc( *(p++), stdpr [Visual C++] Comment convertir un CString en char* ? [ par Braho ] Bonjour,Je suis en train de faire un programme en architecture MFC sous visual C++. Mais j'ai un léger soucis, je n'arrive pas a convertir un CString conversion cstring en char [ par champista ] Bonsoir,j'ai une petite question assez urgente. Je programme et j'ai un pb au niveau des conversion de type : cstring en char.Pouvez vous me dire comm (MFC) Convertir un CString en char[ ]/char * [ par swinteur ] Bonjour tout le monde Bon voilà, je débute en C++ et encore plus avec les MFC et je galère un peu..   alors apr conversion SCtring et char et vice vers ca [ par philo71 ] je voudrais convertir une CString en char et vice vers ça ! J’ai lu plusieurs Fac mais elle ne traite pas ce type de conversion! Quelqu'un aurais t'il FindWindow et SendMessage [ par gbourgeois0019 ] SalutJ'ai un premier programme qui a ceci comme code au tout debut du WinMain :HWND hWnd = FindWindow(0,"MonProgramme");    if ( hWnd != NULL )    {  


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,452 sec (4)

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