Цитата(Tan @ 2.05.2007 19:22) 

Можно объяснить ?
Извиняюсь за вторжение..  не могу удержаться - вопрос уж очень приятный 

Это плата за простоту идеологии ввода, используемой в Read и ReadLn (Read имеется в виду для файлов типа text!).  В простых случаях все работает, как ожидается, но в некоторых случаях возможны накладки..
Твой первый ReadLn уходит на съедение Enter'а, завершающего ввод y.  
Ситуацию легко исправить, если использовать для ввода х и у не Read, а ReadLn.  Собственно, это и есть тот способ ввода, который предполагается при работе с текстовыми файлами (упрощенно выражаясь 

).  Отдельная операция ввода - это всегда ввод строки (в которой может быть несколько чисел).  И если эта строка вводилась Read'ом, то завершающий ее Enter обычно просто как бы игнорируется - если не поставить за ним ReadLn, что ты и сделал 

.  ReadLn же без параметров просто переходит к новой строке, пропуская конец текущей.
Первый ReadLn очистил буфер, второй выполнил задержку.
PS
Н-да, простого объяснения не вышло..