Сейчас на форуме: 2nd, morgot, Rio, CDK123, zds, tyns777, tihiy_grom (+5 невидимых)

 eXeL@B —› Программирование —› FormatMessageA
Посл.ответ Сообщение


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 09:12
· Личное сообщение · #1

Вот код:
Code:
  1. LastError         proc
  2.                  local Message   [260]      :byte
  3.                  
  4.                  pushad
  5.                  pushfd
  6.                  invoke GetLastError
  7.                  lea ebx,[Message]
  8.                  invoke FormatMessageA,1000h,0,eax,LANG_ENGLISH,ebx,400h,0
  9.                  popfd
  10.                  popad
  11.                  invoke StdOut,addr Message
  12.                  ret
  13. LastError         endp


Из кода понятно, что получаем сообщение о последней ошибке...
Проблема в том, что при форматировании сообщения я указываю язык вывода - LANG_ENGLISH
Так несмотря на это, почемуто... сообщение выводиться всеравно на русском...
В чем ошибка? Подскажите плиз...

-----
aLL rIGHTS rEVERSED!





Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 10 апреля 2009 09:27 · Поправил: FrenFolio
· Личное сообщение · #2

DaRKSiDE пишет:
Так несмотря на это, почемуто... сообщение выводиться всеравно на русском...

Видимо потому, что винда-то русская.
DaRKSiDE пишет:
Как раз английская с накатанным MUI... но тогда смысл в том что я задаю язык вывода? Если оно не работает!

Тады как вариант, сделай свой обработчик через UnhandledExceptionFilter.
DaRKSiDE пишет:
P.S. Для тех у кого подобный вопрос возникнет:

Спасибо, пригодится.

-----
Программист SkyNet





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 09:31
· Личное сообщение · #3

FrenFolio пишет:
Видимо потому, что винда-то русская.


Как раз английская с накатанным MUI... но тогда смысл в том что я задаю язык вывода? Если оно не работает!

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 09:35
· Личное сообщение · #4

Неужели нельзя задать язык вывода принудительно? У меня консольное приложение, мне там русский язык как собаке пятая нога...

-----
aLL rIGHTS rEVERSED!





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 10 апреля 2009 09:48
· Личное сообщение · #5

MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 10 апреля 2009 10:10
· Личное сообщение · #6

посмотри в отладчике/дизасме, какая именно константа передаётся
убедись, что это 409h / 1033

-----
EnJoy!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 10:35
· Личное сообщение · #7

Coderess пишет:
MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)


Сенкс... помогло..

P.S. Для тех у кого подобный вопрос возникнет:
Code:
  1. include \masm32\com\include\language.inc
  2. .const
  3. LANG         equ         MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US)
  4. .code
  5. LastError         proc
  6.                  local Message   [260]      :byte
  7.                  
  8.                  pushad
  9.                  pushfd
  10.                  invoke GetLastError
  11.                  lea ebx,[Message]
  12.                  invoke FormatMessageA,1000h,0,eax,LANG,ebx,400h,0
  13.                  popfd
  14.                  popad
  15.                  invoke StdOut,addr Message
  16.                  ret
  17. LastError         endp


Это код который должен иметь место...

-----
aLL rIGHTS rEVERSED!





Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 10:51
· Личное сообщение · #8

За сим тему считаю закрытой!

-----
aLL rIGHTS rEVERSED!



 eXeL@B —› Программирование —› FormatMessageA
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати