Уважаемые программисты! Пытаюсь создать консольное Win32-приложение в FASM, считывающее число и выдающее его факториал. Столкнулся с проблемой: при вызове ReadConsole или ReadFile в буфер заносится совсем не пользовательский ввод! Поясню на примере: console.exe Код (Text): format PE console include 'win32axp.inc' .data ns dd ? hout dd ? buffer db 10 dup (?) .code fuck: invoke GetStdHandle,STD_OUTPUT_HANDLE mov [hout],eax invoke GetStdHandle,STD_INPUT_HANDLE invoke ReadConsole,eax,buffer,10,ns,NULL invoke WriteConsole,[hout],buffer,10,ns,NULL invoke ExitProcess,0 .end fuck Эта программка нормально считывает строку и выводит её вновь, но есть одна странность: прогоняя её под отладчиком, увидел что в buffer попадает отнюдь не введённая строка (т.е. ввожу, например 555, а в buffer c.o.n., т.е. первые буквы имени программы, да ещё и в юникод!!). В данном примере всё почему-то работает (т.е. ввожу 555, в buffer попадает c.o.n., а на экран выводит всё же 555), но беру чуть посложнее (например, прикручиваю самописную StrToInt, а она не пашет, потому что в buffer не цифры; lstrlen стабильно выдаёт длину строки buffer 1 символ) - и всё наворачивается!! Как считать из консоли именно пользовательский ввод? И как сделать это в ANSI, а не Unicode? Please, help!
2 koderr Юморист... Мне-то не смешно: ковырялся, блин, в исходниках одного калькулятора, уразумел принцип действия StrToInt и даже StrToFloat, думал - щас смастерю консольную приблуду, чтоб поскорее алгоритм проверить - ан нет: даже ввод считать не могу!! Что за наказание?!