Как в фортран проверить, была ли нажата клавиша?
Up!
Через winapi можно.
Чтото типа peeknamedpipe(STD_INPUT_HANDLE, .. ) будет работать?
Судя по описанию это то, что тебе нужно.
logical :: pressed=.false.
pressed=peekcharqq
IF(pressed) THEN ...
А где ты это читаешь?
Спасибо!
Попробовал найти там peeknamedpipe, но не нашел. Зато нашел peekcharqq
Уже давно, мучаюсь с перенаправлением ввода вывода
(/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 винапишные функции?
Как вызывать из fortran винапишные функции?
Посмотри книги Бартеньева, например.
Оставить комментарий
vertyal17
Задача такая, в цикле проверить, а вдруг пользователь чтото за это время нажал. Если нажал, то обработать что нажал, а если не нажимал, то продолжать в цикле крутиться.В watcom использовался
if(kbhit_.lt.0) ichar=getch_
В Intel фортран такого нет.
Что посоветуете использовать?