Array Unicode

Iniciado por Cromatico, 18 Marzo 2013, 11:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Cromatico

Buenos dias a todos! Queria hacerles una consulta, tengo un proyecto en DEV C++ con una funcion para leer un array de bytes... ReadProcessMemory...

Lo asigno a un array declarado de esta forma:
BYTE Array[30];

Hasta acá todo perfecto, ahora cuando lo quiero convertir a string...

*TEXTO = const_cast<char*>(LPCSTR(Array));
MessageBox(NULL, *TEXTO, "PRUEBA", MB_OK);
long *buffer;
char text[] = "Nada ";
char name[sizeof(*TEXTO)];
strcpy(name, *TEXTO);
buffer = (long *)calloc(sizeof(*TEXTO), sizeof(*TEXTO));
*TEXTO = (char *)buffer;
strcat(*TEXTO, name);


Con la primera linea, ya logro que el MessageBox me salga correctamente... Lo demas, es para que retorne ese string en VB... No se si habra codigo que sobre, pero es la unica forma que pude hacer que funcione...

El tema es que cuando el array es UNICODE, solo sale la primera letra en el MESSAGEBOX, al igual que lo que llega a VB, solo la primera letra... Como puedo convertir el Array a UTF, o bien, hacer que en el Array, se quiten los 00 que tiene entre cada caracter?

Muchas gracias!!!

Cromatico

Bueno resolvi haciendo otro array con un for que va sumando de dos en dos, y va asignando junto a otro contador, el otro array...
Poco y nada en C++, pero fue la forma en que me la pude rebuscar y funciono :P.

Gracias y saludos

x64core

Existen funciones que te facilitan la conversion:
MultiByteToWideChar
WideCharToMultiByte

Luz Violeta

Prácticamente todas las funciones que vas a usar de la API de Windows tienen su versión "ansi" y "unicode" ... básicamente según hagas un define indicando que el proyecto es unicode o no, el preprocesador apunta las funciones a su versión ansi u unicode.

Miralo así:

MessageBoxA → Versión ANSI
MessageBoxW → Versión "Wide" o Unicode.
MessageBox → Un preprocesador que apunta a una u otra según se configure el proyecto.

Antes que hacer conversiones, es mejor usar la respectiva función.

Saludos.

P.S → Eso o entendí rrré mal tu intención x')
It's sort of like my past is an unfinished painting. And as the artist of that painting, I must fill in all the ugly holes and make it beautiful again.