Как в фортран проверить, была ли нажата клавиша?

vertyal17

Задача такая, в цикле проверить, а вдруг пользователь чтото за это время нажал. Если нажал, то обработать что нажал, а если не нажимал, то продолжать в цикле крутиться.
В watcom использовался
if(kbhit_.lt.0) ichar=getch_
В Intel фортран такого нет.
Что посоветуете использовать?

vertyal17

Up!

durka82

Через winapi можно.

vertyal17

Чтото типа peeknamedpipe(STD_INPUT_HANDLE, .. ) будет работать?

durka82

Нашел в Интеловском фортране такую функцию - peekcharqq.
Судя по описанию это то, что тебе нужно.

lili197602

use dflib
logical :: pressed=.false.
pressed=peekcharqq
IF(pressed) THEN ...

vertyal17

Спасибо завтра попробую.
А где ты это читаешь?

vertyal17

Спасибо!

durka82

В помощи к интеловскому фортрану.
Попробовал найти там peeknamedpipe, но не нашел. Зато нашел peekcharqq

vertyal17

Блин чо за прикол
Уже давно, мучаюсь с перенаправлением ввода вывода
(/showflat.php?Cat=&Board=prog&Number=4043164&Forum=prog&Words=stdin&Match=Entire%20Phrase&Searchpage=0&Limit=25&src=&Old=&Main=4043164&Search=true&showlite=#Post4043164 и т.п.)
Теперь у меня прога, которую компилировал Intel fortran, с использованием peekcharqq, getcharqq.
Так эта прога, даже если ей перенаправить поток ввода, ловит клавиатуру!
То есть например, я ее включил, и перенаправил поток. У программы поток ввода newstdin, а другой конец у меня называется write_stdin. Если пишу во write_stdin, то прога ничего не ловит. Если чтонибудь нажимаю в программе, то она корректно ловит событие нажатия клавишы и корректно определяет что было нажато. Если нажимаю 'f', то прога ловит нажатие 'f', и просит ввести имя файла (чтение имени файла производится функцией read '(A40)',Fi_MED). И вот тут она начинает читать с трубы
Как вызывать из fortran винапишные функции?

durka82

Как вызывать из fortran винапишные функции?

Посмотри книги Бартеньева, например.
Оставить комментарий
Имя или ник:
Комментарий: