reset(f);
seek(f,filesize(f));
X := 0; write(f, X); { <--- Пишем 0 в самый конец файла, увеличивая его размер }
seek(f, filepos(f) - 2); { <--- Устанавливаем указатель на число, с которого начнем перемещение }
{ Это как раз то самое число, которое было последним в файле, }
{ пока туда не записали 0 }
{
А дальше - все просто: читаем число, при этом указатель сам перемещается
на следующую позицию в файле, туда прочитанное число и пишем, указатель
опять перемещается еще дальше, а мы его перебрасываем на 3 (!!!) позиции
назад, чтобы на следующем круге начать перемещение на одну позицию раньше.
Повторять, пока не дойдем до нужной позиции
}
while filepos(f) >= N do begin
read(f, x); write(f, x);
seek(f, filepos(f) - 3);
end;
seek(f, N); write(f, M); { Все, пишем туда куда надо введенное число }
{ И выводишь файл на печать для проверки }
Работа с файлами... |