|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 12, 2004 12:31:15 Помогите Пожалуйста из строки UNICODE получить ASCII, из ASCII в UNICODE есть макрос |
|
|
Дата: Окт 14, 2004 03:41:51 Dima WideCharToMultiByte? |
|
|
Дата: Окт 15, 2004 10:23:48 Спосибо за ответ q_q. Извени я не полностью раскрыл вопрос, на том этапе мне казалась проблема в кодировке, но время идет :). Собственно UNICODE возвращается после отработки NetQueryDisplayInformation в системный буфер, и тут начинаются кракозябли.Я эту функцию использую для просмотра сети, уровень устанавливаю 2, возвращается структура, .usri2_name не получается отобразить "нормально" Макрос: UNITOASCII MACRO STRINGADD1,STRINGADD2 push edx push ecx mov ecx,STRINGADD1 mov edx,STRINGADD2 @@: mov ax,WORD PTR [ecx] mov [edx],al add edx,1 add ecx,2 cmp ax,0 jne @b pop ecx pop edx ENDM Вызов из секции кода: UNITOASCII offset UnicodeString,offset Buffer |
|
|
Дата: Окт 15, 2004 10:47:01 · Поправил: q_q Dima Расшифруй термин отобразить. На экране? Твоего кода не достаточно, т.к. не видно описания/определния UnicodeString и Buffer. Ты уверен, что NetQueryDisplayInformation отрабатывает успешно? Imho макрос - "нехороший", я использую WideCharToChar
mov eax,[esp+04h] ;; адрес UNICODE-строки
push eax
push -1
push eax
call IsBadStringPtrW
or eax,eax
pop eax
jnz short @1
push eax
call lstrlenW
inc eax
jz short @2
push eax
push eax
push 40h ;; GMEM_FIXED or GMEM_ZEROINIT
call GlobalAlloc
pop ecx
or eax,eax
jz short @2
mov edx,[esp+04h]
push eax
push 0
push 0
push ecx
push eax
push -1
push edx
push 0
push CP_ACP
call WideCharToMultiByte
or eax,eax
pop eax
jnz short @2
push eax
call GlobalFree
@1: xor eax,eax
@2: ret 4
WideCharToChar endp |
|
|
Дата: Окт 15, 2004 18:20:26 Согласен, твой код лучше. NetQueryDisplayInformation отрабатывает правильно т.к. получаю ошибку ERROR_MORE_DATA и дальше у меня проблемы с пониманием извлечения структуры NET_DISPLAY_...,в программе на С это очень просто(пример в MSDN-> NetQueryDisplayInformation тоько он карявый, рабочий есть по NetServerEnum)в обоих случаях они объявляют 2структуры NET_DISPLAY_GROUP(SERVER_INFO_101) и копируют адрес(?) полученный в другую структуру, это получается, не получается вывести на дисплэй имена компьютеров(или вообще к ним добраться выводит что-то типа ??";№ - чёрти что) |
|
|
Дата: Окт 16, 2004 18:57:56 · Поправил: KiNDeR А что мешает читать в буфер вимволы через один? 1,3,5...,n пока не встретишь нулевое слово, т.е. два байта нулей... ... ... Или вообще для "отображения" использовать UNICODE функции? |
|
|
Дата: Окт 16, 2004 19:07:35 > Или вообще для "отображения" использовать UNICODE функции? Ага, особенно в 9x =) |
|
|
Дата: Окт 16, 2004 19:21:11 > Ага, особенно в 9x =) А что в 9х нет функции MessageBoxU или SetWindowTextU? |
|
|
Дата: Окт 16, 2004 19:56:40 > или SetWindowTextU? Этой точно нет. А юникодовая MessageBox в 9х сводится к ASCII варианту после преобразования строк. |
|
|
Дата: Окт 16, 2004 22:29:57 Зато в 9х есть TextOutW. |
|
|
Дата: Окт 18, 2004 07:33:52 Dima не получается вывести на дисплэй Если что-то не получается, то покажи код. Про вывод для GUI-app написали. В аттаче смотри про вывод для CON-app. _444456153__demoNQDIA.rar |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.076 |