|
Вопрос # 3 174/ вопрос открыт / |
|
Здравствуйте, эксперты!
Мне нужно научиться выходить из графического режима в Free Pascal по нажатию клавиши. В Borland Pascal (BP 7.0) я поступал для выхода из графического режима следующим образом:
Readln; RestoreCrtMode; ClrScr; closegraph;
Нажимал, когда мне было нужно “Enter” и выходил из графики.
В Free Pascal ничего подобного не происходит; программа зависает в графическом режиме и висит пока я её полностью не закрою через Windows.
Встречался ли кто-нибудь с этой проблемой?
 |
Вопрос задал: VBoris (статус: Посетитель)
Вопрос отправлен: 10 сентября 2009, 22:59
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 14 сентября 2009, 20:00; участников в обсуждении: 3.
|
Егор (статус: 10-ый класс), 13 сентября 2009, 12:12 [#1]:
не понял последовательность - Readln; RestoreCrtMode; ClrScr; closegraph; - т.е. сначала переходим в текстовый режим (RestoreCrtMode), потом чистим экран (ClrScr), а потом закрываем ГРАФИЧЕСКИЙ режим? а экран, между прочим, вообще-то, уже не в графическом, а в текстовом режиме.
или я ошибаюсь?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
VBoris (статус: Посетитель), 13 сентября 2009, 23:21 [#2]:
Всё так и есть. Но всё дело в том, что мне надо удержаться в графическом режиме и пробыть там неопределённо долгое время. А если я, например, поставлю closegraph; перед Readln; то графический режим закроется, и я окажусь у разбитого корыта. Поэтому, я вынужден при любом раскладе ставить Readln; перед closegraph; Я вообще пробовал вариант:
Readln; СloseGraph; (т.е. RestoreCrtMode: и ClrScr убрал), но результат тот же. А именно: программа виснет в графическом режиме и на Readln; не реагирует. Как из графического режима перейти в текстовый режим загадка.
|
|
Вадим К (статус: Академик), 14 сентября 2009, 01:08 [#3]:
а надо не readln ждать, а есть Readkey или что то в этом стиле. Просто когда в графический режим переходите, readln не может читать с консоли.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Егор (статус: 10-ый класс), 14 сентября 2009, 01:23 [#4]:
to Вадим К:
впервые слышу, чтобы readln не мог читать в графическом режиме.
хотя... freepascal - фиг его знает 
to VBoris:
а встроенного хелпа нет?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Вадим К (статус: Академик), 14 сентября 2009, 11:08 [#5]:
to Егор
Многие забывают, что турбопаскаль работает в 16 битном режиме под Досом. А Фрипаскаль - под Windows/Linux/Mac как минимум в 32битном, а то и 64битном режиме через API вызовы оси...
Поэтому если фокуса на элементе ввода нет, то ничего не получиться.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
VBoris (статус: Посетитель), 14 сентября 2009, 20:00 [#6]:
to Вадим К: “ReadKey” подошло. Спасибо. Сделал так:
uses Graph, Crt, WinCrt;
var AnyKey: char;
Begin
AnyKey:=ReadKey; CloseGraph;
RestoreCrtMode; Readln;
End.
Но ещё одна незадача. Из графического (оконного) режима программа выходит и переходит в текстовый режим, но... сворачивается.Чтобы её развернуть на весь экран приходится пользоваться клавишами Alt+Tab, что неудобно. Можно ли сделать так, чтобы программа сразу переходила из графического режима в полноэкранный текстовый режим?
to Егор: Встроенного в FreePascal хелпа нет. Но он (хелп) скачивается совместно с версией FreePascal в виде отдельных больших файлов, в которых сложно разбираться. Файлы имеют содержание, они упорядочены, но неудобны для пользования. Возможно(?) этот поставляемый с версией хелп можно сделать встроенным, но как это можно сделать (если можно?) я не знаю.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|