Invoke GetStdHandle,Std_Input_Handle
Mov hStdIn,EAX
Глюк ReadConsole
Вдруг пошли глюки(когда глубже тестить начал).При вводе более 1 цифры(ширина матрицы) второе число(высота) просто не вводится-ReadConsole проскаивает без задержки,причём(вот ммм...плохая функция!!!) в EAX возвращает 1,а LastError не меняется(в общем случае-Error_Success)
Может,она закладывается на значения регистров или флагов?Или в чём дело,кто-нибудь объяснит?Код-чуть попозже
Вот,собственно,и код
Так что,кто-нибудь может ответить?А то из-за этого глюка я положил на 2 программы,а ещё одна глючит:вводишь её число,она пишет,что надо,потом опять его запрашивает,но ввода НЕТ!Поэтому сразу вывод о том,что,мол,"введите число",и только при повторном запросе всё опять работает
Лучше отладчика тебе никто не ответит. А точно пересчитывает верно? Попробуй ввод без пересчета.
Код:
перед каждым считыванием
Он ведь постоянен и хранится у меня в ячейеке памяти(если ты читал код)
Код:
Add ESP,4
как-то не в тему.
И это у тебя вообще работает?! Какая винда - 98 что-ли?
Буфер сделай нормальным! Чего ты жадничаешь-то? Хочешь вводить от 1 до 3-х символов и говоришь что буфер 3 байта? А как насчет "197"\0xD\0xA ?? 5 байт знаешь ли! Вот и сделай буфер байт эдак 16.. Жалко что-ли??
да, и причина чего я это так распалился - код, код структурируй чтобы его читать было удобно другим, уважай своих собеседников. Метки в отдельных строках, виндовские константы пишутся только большими буквами, ассемблерный код - только одинаковыми буквами (или большими, или маленькими)
Somebody:попробуй подумать(или хотя бы воспользуйся мозгом:)).Если у нас в стеке адрес возврата на точку выхода из программы(по тому адресу располагается
Код:
Push EAX
Call ExitProcess
Call ExitProcess
(в этом роде),а выше–адрес возврата из процедуры Str2Num,тогда Add ESP,4 установит указатель стека на адрес процедуры выхода,и в таком случае программа просто завершится.Не так ли,м?
Phodopus:да ну!?
Тем более,этот код писался достаточно давно:)
Цитата: @pixo $oft
Тем более,этот код писался достаточно давно:)
ну так переписал бы, там ж не несколько тыщ строк..
Цитата: @pixo $oft
попробуй подумать(или хотя бы воспользуйся мозгом:))
Попробовал - сначало первое, потом второе, потом одновременно. Надо же, помогло! (А тогда времени не было просто разбираться в этом.)