String to bstr

Signaler
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Salut
je veux marshaler un bstr pr un prg ecrit en NCl.
j'ai besoin de convertir ma chaine en BSTR.
j'ai tenté par :

unsigned long length = strlen(chaine);
int ResultLength = MultiByteToWideChar (CP_ACP,MB_PRECOMPOSED,
                   reinterpret_cast <char *>(chaine),length,NULL,0);
*strRet = SysAllocStringLen( NULL, ResultLength);
MultiByteToWideChar (CP_ACP,MB_PRECOMPOSED,
                   einterpret_cast <char *>(chaine),length,*strRet,ResultLength);

comment faire.


A vs

3 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
wchar_t* szwText=L"Bonjour !";
BSTR bStr=SysAllocString(szwText);

// OLECHAR est de type Unicode dans du code 32 bits, donc OLECHAR* = wchar_t* ou short* ou WCHAR* ou...
Messages postés
62
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
21 mars 2010
6
Salut
mais si je veux Le "bonjour" sera un variable?
L+monvariable!! ça marche pas avec.
Merci


A vs
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Convertir ANSI en UNICODE tu veux dire? Ben c'est le code que tu as proposé, ça fonctionne très bien :
BSTR bstr;
char szText[]="Bonjour";
unsigned long length = 8;

int ResultLength = MultiByteToWideChar (CP_ACP,MB_PRECOMPOSED,
                   szText,length,NULL,0);

bstr= SysAllocStringLen( NULL, ResultLength);
MultiByteToWideChar (CP_ACP,MB_PRECOMPOSED,
                   szText,length,bstr,ResultLength);