Аналог функции Си: kbhit() на assembler

Тема в разделе "WASM.BEGINNERS", создана пользователем ferona, 24 апр 2011.

  1. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    Как проверить была ли нажата клавиша, так, как это делает СИшная функция kbhit().
    В программе стоит бесконечный цикл. Внутри, в определенном месте нужно проверить
    была ли нажата клавиша ESC, и если да, то выйти из этого цикла, если ничего нажато
    не было, то продолжить итерации.

    Пробовал ReadConsoleInputA, но на ней работа программы останавливается и ждет ввода
    либо действий мыши. ...вроде задачу сформулировал...жду помощи

    *пишу в masm32, консольное приложение для windows.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    посмотрите исходники kbhit().
     
  3. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    залез внутрь функции kbhit(), нашел там пару вызовов к kernel32.
    1) GetNumberOfConsoleInputEvents
    2) PeekConsoleInputA
    Первая, как пишет мсдн, возвращает количество необработанных событий.
    Вторая читает буфер нажатых клавиш не удаляя их оттуда.
    Поэксперементировав, наткнулся на искомую вещь, но работает она пока некорректно.

    Спасибо за ответ, буду рыть в этом направлении. Если кто-то подскажет свое решение, буду оч рад)))
     
  4. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    Полностью решил свою проблему. Нужно использовать функции:

    1) FlushConsoleInputBuffer
    2) PeekConsoleInputA

    :)
     
  5. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    И да, в Си такой функции нет.
     
  6. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    а что же там есть? )))
     
  7. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
  8. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    ferona
    http://zalil.ru/30938885 — ISO С99.
    Поиск по тексту ничего не дал.
     
  9. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    Огромное спасибо за стандарт с99, вещь нужная.

    ладно хоть ты это осознаешь, дерзай. Я тебе тоже не советую оставлять недочитанные учебники, можешь пропустить важные моменты.
    Раз взялся, учи основательно.


    Как видите, Z3N и Микроэдишн, я тоже могу докапываться до не четко сформулированных выражений (Z3N, ты не сказал кому дочитывать то нужно, хоть я и понял что адресовано это было мне, офигеть какой я доходчивый, да?). Я не говорил что kbhit() описан в стандарте С99 (еще раз спасибо Микроедишину, ему я искренне благодарен за ссылку). kbhit() используется в языке Си (Z3N, будешь спорить?, ты же у нас несусветно начитанный), когда это необходимо. Ну лан ребята, не хотел я никого оскорблять. Дело в том что некоторые личности видят в чужом глазу веточку, а в своем бревна не видят (Библия:Новый завет, ну это уточнение не для Z3N, он пади уже и 3 завет прочитал, уж больно грамотный). Если зашел такой новичок как я, то ему стоит помочь, а не докапываться до мелочей (- "в Си нет такой функции". Да есть там такая функция!!!, стандартом только не поддерживается).

    Теперь можете дальше критиковать, поводов я дал предостаточно ))). Скорее всего появятся новые семь пядей во лбу, но попрошу Вас писать только по делу(сам сейчас нарушаю это правило), либо давать полезные ссылки как это сделал Микроэдишн, и не давать такую тупость как КНИГОМАН Z3N (про автомат.поиск гугла).
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    ferona
    Нервишки шалят?

    Устное предупреждение.
     
  11. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    Извините пожалуйста, а вообще лучше удалите эту тему, чтобы у других не было желания писать в такой же форме. Все равно тут нет ничего полезного, вопрос я решил самостоятельно. Я думал меня без предупреждения от сюда ))). И вот, делайте еще предупреждения тем, кто не дает хороших или хотя бы нейтральных ответов, такие люди сами вынуждают отвечать им в такой форме. Нервы действительно не всегда устойчивы ), но только в исключительных случаях, обычно я сдержанный и терплю до предела ).

    Удачного Вам банострела ))), да и просто удачи!!!
     
  12. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Маторезка не очень корректно работает.
     
  13. ferona

    ferona New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2011
    Сообщения:
    7
    угумс... видимо при ее написании было лень проверить 3-4 слова, которые резать не нужно.