Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

RtlUnicodeStringToAnsiString

Привет всем!

Программирую на Delphi. Имею такой код:

var
Name : PAnsiString;
us : PUnicodeString;

.......
begin

asm

mov eax, len
mov us.Length, eax
lea eax, buffer
mov us.buffer, eax

end;
us.MaximumLength := us.Length;
RtlUnicodeStringToAnsiString (Name, us, TRUE);

Этот код не работает :( Как мне правильно сделать преобразование?
Можно на C или ASM

Ответить   nero@p*****.ru Tue, 23 Jan 2007 10:08:57 +0300 (#632120)

 

Ответы:

Здравствуйте, nero!

Для преобразования строки из Unicode в ANSI можно использовать функцию
int WideCharToMultiByte(
UINT CodePage, // code page
DWORD dwFlags, // performance and mapping flags
LPCWSTR lpWideCharStr, // wide-character string
int cchWideChar, // number of chars in string.
LPSTR lpMultiByteStr, // buffer for new string
int cbMultiByte, // size of buffer
LPCSTR lpDefaultChar, // default for unmappable chars
LPBOOL lpUsedDefaultChar // set when default char used
);
вот таким образом:

WideCharToMultiByte(CP_ACP, NULL, wszStr, -1, szStr, uSize, NULL, NULL) ,
где
wszStr : указатель на unicode-строку
-1 : unicode-строка заканчивается нулевым символом (можно указать длину в
символах)
szStr : указатель на буфер для ansi-строки
uSize : длина буфера для ansi-строки

And remember - respect is everything.
AleX

Ответить   Wed, 24 Jan 2007 18:21:45 +0300 (#632539)