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

Перед выполнением корректировки пользователь должен увидеть содержимое файла и выбрать запись для корректировки, например, запомнив её порядковый (логический) номер.

Корректировка выполняется по технологии, схожей с технологией удаления записей. Открывается основной файл, и его записи переписываются в новый файл последовательным доступом. При этом каждая прочитанная запись контролируется – должна ли она быть скорректирована. Если нет, то она переписывается в новый файл. Если да, то не переписывается, а корректируется.

{ корректировка записей файла f1 }

...

reset(f1);

rewrite (F_temp);

Repeat

read(f1,zap);

if {запись не корректируется}

Then write (f_temp, zap)

else {запись корректируется}

Begin

{ 1. исх. запись zap копируется

в поле zap_corr}

{ 2. пользователь корректирует}

{ поля записи в zap_corr }

{ 3. затем у пользователя }

{ запрашивается подтверждение}

{ сделанной корректировки}

if { корректировка подтверждена }

then {в файл записываеся

Откорректированная

запись zap_corr }

Write (f_temp, zap_corr)

else {в файл записывается

исходная запись zap}

write (f_temp, zap);

end;

until eof(f1);

close(f1);

close (f_temp);

...

Пользователь должен подтвердить корректировку или отказаться от неё. Перед подтверждением пользователь должен увидеть тексты старой, исходной и новой, откорректированной записей. Только после этого он принимает решение о подтверждении сделанной корректировки или отказе от неё. Лучший вариант – возможность видеть одновременно и прежнее, и новое значения полей.

После закрытия файлов возможны следующие варианты:

а) старый файл уничтожается, а новый файл получает имя старого файла;

б) старый файл сохраняет прежнее имя, но получает новое расширение ~.BAK, а новый файл получает имя старого файла;

в) содержимое нового файла переписывается в старый файл, новый файл уничтожается.

Корректировка с использованием прямого доступа:

1) определяется корректируемая запись;

2) значение ключевого признака корректируемой записи преобразуется в номер физической записи в файле;

3) указатель записи позиционируется на искомую запись процедурой Seek (имя_файла_прогр, номер_записи);

4) искомая запись читается в оперативную память с использованием Read (имя_файла_прогр, поле_записи);

5) выполняется корректировка полей записи;

6) указатель вновь позиционируется (возвращается) на корректируемую запись процедурой

Seek (имя_файла_прогр, номер_записи);

либо

Seek (имя_файла_прогр, (FilePos (имя_файла_прогр) - 1);{возврат с текущей записи на предыдущую}

7) вывод откорректированной записи в файл на своё прежне место

Write (имя_файла_пр, поле_записи);

Внимание: здесь тоже необходимо подтверждать выполнение сделанной корректировки


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: