Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 174

/ вопрос открыт /

Здравствуйте, эксперты!
Мне нужно научиться выходить из графического режима в Free Pascal по нажатию клавиши. В Borland Pascal (BP 7.0) я поступал для выхода из графического режима следующим образом:
Readln; RestoreCrtMode; ClrScr; closegraph;
Нажимал, когда мне было нужно “Enter” и выходил из графики.
В Free Pascal ничего подобного не происходит; программа зависает в графическом режиме и висит пока я её полностью не закрою через Windows.
Встречался ли кто-нибудь с этой проблемой?

VBoris Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

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

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 в виде отдельных больших файлов, в которых сложно разбираться. Файлы имеют содержание, они упорядочены, но неудобны для пользования. Возможно(?) этот поставляемый с версией хелп можно сделать встроенным, но как это можно сделать (если можно?) я не знаю.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.03 сек.