TextW

Тема в разделе "WASM.WIN32", создана пользователем calidus, 6 сен 2008.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Mikl___

    Спасибо =) , динамически я имел ввиде не макрос , так как текст будет вводится во время выполнения проги и всегда раззный. Лучший вариант тогда апи функция перевода , а потом перевод повторно с добавлением Слэша наверное
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    calidus
    Тогда лучший вариант у AsmGuru62 с добавлением
    Код (Text):
    1. %elif %%a > 127
    2.       DB %%a-0B0h,4
    3.     %else
    4.       DW %%a
    для работы с кириллицей. А слэш и так бы обработался "\" -> db 5Ch,0
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    calidus
    а ты всё ещё не перешлифовал "5 коп" под то чтобы они вместо делания "псевдоуникода" слеш в анси добавляли? там же всё элементарно...
    Ну а затем скармливаешь результат MultiByteToWideChar с кодовой страницей CP_THREAD_ACP (родная для приложения) или GetACP(VOID); (родная для системы) и всё ок.

    Mikl___
    речь не про макрос.....
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Y_Mur
    И я не о макросе -- там о "cmp al,127"
     
  5. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) нее , пока нет , выходной путь будет выходным , но идея ясна Спасиб. Проблема стояла в том что , нужно было через иоктл подавать всегда разную строку на инициализацию в драйвер , после этого файл не открывался потому что адрес не правильно переведен. Указатели на памяти верны , а вот со строкой всегда что то не то. Потом отпишусь.
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    A2W/T2W доставляет
     
  7. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    остапа понесло???
     
  8. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Все сделал всем спасибо =)
     
  9. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. @ansi2unicode macro
    2.               xor eax, eax
    3.               lodsb
    4.               stosw
    5.               test al, al
    6.               jnz $-5
    7. endm
    8. @unicode2ansi macro
    9.               xor eax, eax
    10.               lodsw
    11.               stosb
    12.               test al, al
    13.               jnz $-5
    14. endm
    Вот еще кому надо )

    использование

    mov esi, offset ansiDll
    mov edi, offset unicodeDll
    @ansi2unicode
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    calidus
    Код (Text):
    1. @unicode2ansi macro
    2.               xor eax, eax <-- для чего?
    3.               lodsw
    4.               stosb
    5.               test al, al
    6.               jnz $-5
    7. endm
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    litrovith
    Куда уж конкретнее?

    calidus
    Всё равно ограничился псевдовариантом, ну дело твое...
    Кстати lods, stos конечно компактнее, но быстрее в данном случае разбить их на отдельные команды (хотя конечно это не принципиально).
     
  12. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) не не это н мой вариант .. мой масивнее эти макросы мне дали просто

    Код (Text):
    1. invoke lstrlen,addr adwInBuffer
    2. mov ecx,eax
    3. lea esi,adwInBuffer
    4. lea edi,adwInBufferTMP
    5. @@:
    6.   mov al,byte ptr [esi]
    7.   cmp al,"\"
    8.   jne @@Fow
    9.   mov byte ptr [edi],al
    10.   inc edi
    11. @@Fow:  
    12.   mov byte ptr [edi],al
    13.   add edi,1
    14.   inc esi
    15.   dec ecx
    16.   jnz @B
    17. ;invoke MessageBox,0,addr adwInBufferTMP,addr Pr,MB_ICONQUESTION+MB_OK
    18.  
    19. invoke lstrlen,addr adwInBufferTMP
    20. mov cchWideChar,eax
    21. invoke MultiByteToWideChar,CP_ACP,0,addr adwInBufferTMP,cchWideChar,addr adwInBufferW, sizeof adwInBufferW
    вот мой ...