Глиф Учебники

Окно программы сразу закрывается

Справочник · Pascal · 1 минута чтения

Добавьте перед последним end. строку readln; — программа будет ждать нажатия Enter:

Pascal
program Hello;
begin
  writeln('Привет!');
  writeln('Нажмите Enter для выхода');
  readln;
end.
Вывод
Привет!
Нажмите Enter для выхода

Почему так происходит

Консольная программа работает в окне, которое Windows открывает для неё, и закрывает, как только программа закончилась. Если запустить .exe двойным щелчком, программа выводит текст, завершается — и окно исчезает за долю секунды. Ошибки здесь нет: программа просто сделала всё, что её просили.

В окне вывода PascalABC.NET такой проблемы нет: результат остаётся на экране, пока его не очистят. В среде fp из Free Pascal после запуска показывается снова текст программы, а вывод можно посмотреть клавишами Alt+F5.

Почему readln в конце иногда не помогает

Если до этого программа читала данные через read, после последнего числа в строке ввода остаётся перевод строки. Последний readln может сразу «съесть» его и не ждать нажатия. Решения:

Если программа остановилась с ошибкой, до readln в конце дело не доходит — окно закроется сразу. Чтобы увидеть текст ошибки, запустите программу из командной строки.

Запуск из командной строки

Откройте командную строку в папке с программой — в Проводнике наберите cmd в адресной строке и нажмите Enter — и запустите программу по имени:

Командная строка
hello.exe

Окно командной строки не закроется после завершения программы: весь вывод и сообщения об ошибках останутся на экране.