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

Как сделать задержку в программе

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

Задержку задают в миллисекундах: 1000 мс — одна секунда.

Пауза: Sleep

Процедура Sleep есть в обеих средах, но подключается по-разному.

PascalABC.NETподключать ничего не нужно

Pascal
program Countdown;
var
  i: integer;
begin
  for i := 3 downto 1 do
  begin
    writeln(i);
    Sleep(1000);
  end;
  writeln('Старт!');
end.
Вывод
3
2
1
Старт!

Строку uses sysutils; здесь не пишите: такого модуля в PascalABC.NET нет, а Sleep работает и без него.

Дальше — для всех случаев

Free Pascalsleep из модуля sysutils

Pascal
program Countdown;
uses sysutils;
var
  i: integer;
begin
  for i := 3 downto 1 do
  begin
    writeln(i);
    sleep(1000);
  end;
  writeln('Старт!');
end.
Вывод
3
2
1
Старт!

Числа появляются с паузой в секунду.

delay из модуля crt

В старых учебниках по Turbo Pascal задержку делают процедурой delay из модуля crt: после заголовка программы пишут uses crt;, а в нужном месте — delay(500);. Так можно и в Free Pascal, и в PascalABC.NET.

Но в PascalABC.NET программа с uses crt не запускается обычным F9: среда напишет, что такую программу нужно запускать клавишами Shift+F9, — тогда она откроется в отдельном окне консоли. Если crt нужен только ради задержки, проще взять Sleep.

Ждать нажатия Enter

Иногда нужна не пауза по времени, а «нажмите Enter, чтобы продолжить». Для этого хватит readln без параметров — он ждёт, пока человек нажмёт Enter:

Pascal
writeln('Нажмите Enter, чтобы продолжить');
readln;

Так же задерживают окно программы, которое иначе сразу закрывается, — см. справку Окно программы сразу закрывается.

Подводные камни