Шестой пункт необходим, так как после считывания записи указатель файла переместится к следующей записи, поэтому, чтобы откорректированную запись сохранить на старом месте, указатель надо переместить на один компонент вверх.
Пример:
Рассмотрим корректировку отдельных полей записи. Пусть в нашем примере могут изменяться реквизиты "название книги" и "индекс книги". Запишем фрагмент программы, реализующий эти изменения по указанному пользователем номеру записи в файле.
Procedure KorrP;
Var
NewAvtor: string [16];
NewNazv: string[30];
New Index : integer;
begin
Writeln ('Дайте имя файла:');
Readln (FilName);
Assign ( BF, FilName);
Reset ( BF);
with RB do
begin
('Сколько записей будете корректировать?');
Readln (k);
For I : = 1 to k do
begin
Write ('Дайте номер корректир. записи:');
Readln (k1);
Write ('Дайте название книги’);
Readln (NewName);
Write ('Дайте индекс');
Readln (NewIndex);
Seek (BF, k1 - 1);
Read ( BF, RB);
Avtor:= NewAvtor;
Nazv:= NewNazv;
Index:= Newlndex;
Seek (BF, k1 - 1);
Write ( BF, RB);
end
end;
Close( BF)
end;
Все приведенные выше процедуры работы с файлом прямого доступа удобно объединить в одной программе. В этом случае процедуры вызываются из основной программы путем указания номера нужного режима в меню. После выполнения процедуры происходит возврат в основную программу. Выход из программы осуществляется, если указан режим 5.