Окно программы сразу закрывается
Добавьте перед последним end. строку readln; — программа будет ждать нажатия Enter:
program Hello;
begin
writeln('Привет!');
writeln('Нажмите Enter для выхода');
readln;
end.Привет!
Нажмите Enter для выходаПочему так происходит
Консольная программа работает в окне, которое Windows открывает для неё, и закрывает, как только программа закончилась. Если запустить .exe двойным щелчком, программа выводит текст, завершается — и окно исчезает за долю секунды. Ошибки здесь нет: программа просто сделала всё, что её просили.
В окне вывода PascalABC.NET такой проблемы нет: результат остаётся на экране, пока его не очистят. В среде fp из Free Pascal после запуска показывается снова текст программы, а вывод можно посмотреть клавишами Alt+F5.
Почему readln в конце иногда не помогает
Если до этого программа читала данные через read, после последнего числа в строке ввода остаётся перевод строки. Последний readln может сразу «съесть» его и не ждать нажатия. Решения:
- читайте данные через
readln, а не черезread, — тогда строка ввода забирается целиком; - или поставьте в конце два
readln;подряд.
Если программа остановилась с ошибкой, до readln в конце дело не доходит — окно закроется сразу. Чтобы увидеть текст ошибки, запустите программу из командной строки.
Запуск из командной строки
Откройте командную строку в папке с программой — в Проводнике наберите cmd в адресной строке и нажмите Enter — и запустите программу по имени:
hello.exeОкно командной строки не закроется после завершения программы: весь вывод и сообщения об ошибках останутся на экране.