06.07.2007 10:42:58Приведение к Unicode Ответов: 1
Волков
Требуется преобразовать строку AnsiString в Unicode. Делаю это следующим образом:
AnsiString RecepientCA=StringGrid1->Cells[1][Row];
wchar_t bufCA[50]={0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,};

RecepientCA.WideChar(bufCA,RecepientCA.Length());
Если строка на русском то в итоге bufCA будет содержать что-то вроде \x0418\x0432.... то что надо, но если строка на английском то она не изменяется Почему так?
 
Ответы:
06.07.2007 11:11:43Сергей
Самый надежный способ использовать вот эту конструкцию:
LPSTR строкаИсточникAnsi = "Тестовый ANSI";
LPWSTR строкаПриемникWide = NULL;
int РазмерТребуемогоБуфера = MultiByteToWideChar(CP_ACP, 0,строкаИсточникAnsi,-1,строкаПриемникWide,0);
if(РазмерТребуемогоБуфера>0)
{
строкаПриемникWide = (LPWSTR) new BYTE[РазмерТребуемогоБуфера];
//Собственно сама конвертация
MultiByteToWideChar(CP_ACP, 0,LPCSTR строкаИсточникAnsi,-1,LPWSTR строкаПриемникWide,РазмерТребуемогоБуфера);
}
.......//Тут ещё что-то
//При выходе из процедуры, настоятельно почистим за собой
delete строкаПриемникWide;