Эта технология может быть применена при обработке файлов относительно небольших размеров.
Если объём оперативной памяти и объём файла позволяют, то схема обработки типизированного файла может выглядеть следующим образом.
1. Исходя из количества записей, выделяется динамическая память под массив записей.
2. Записи файла переносятся в массив.
3. Над массивом записей в оперативной памяти выполняются требуемые действия (заполнение, добавление, удаление, корректировка), но реализуемые алгоритмами работы с массивом.
4. После окончания обработки массив записывается в новый файл (желательно, чтобы пользователь подтвердил сделанные изменения).
5. Принимается решение о варианте использования нового файла в совокупности с основным (переименование в основной файл, перепись в основной и удаление и т.д.).
Внимание! Только один этот вариант работы с файлами в лабораторных работах № 1 и № 2 использован быть не может. Необходимо применить варианты использования рабочего файла.
|
|
Особенности обработки текстовых файлов.
Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки. Весь файл заканчивается символом «конец файла».
К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип TEXT.
VAR
Имя_файла: TEXT;
Посимвольные операции ввода-вывода выполняются для текстовых файлов процедурами read и write.
Строки (логические записи)вводятся и выводятся специальными процедурами для текстовых файлов readlnиwriteln. |
Кроме того, для текстовых файлов применяются процедуры ASSIGN, RESET, REWRITE, CLOSE, EOF, eoln.
Процедура append открывает существующий текстовый файл для добавления записей.
Для текстовых файлов нельзя использовать процедуры и функции SEEK, FILEPOS, FILESIZE, т.к. элементы (записи текстового файла) имеют разную длину.
input и output стандартные текстовые файлы для ввода с клавиатуры и вывода на экран.
Рекомендация: при вводе/выводе преимущественно использовать процедуры READLN () и WRITELN ();
Пример
Рассмотрим программу, реализующую следующую задачу. Дан текстовый файл F1.Необходимо заменить во всех записях этого файла код группы ДКЕ-101 на ДКЕ-201. Скорректированные записи поместить в файл F2.
Var
f1,f2: text;
pole:string;
filename, filenam2:string[12];
pz: integer;
Begin
write(‘ввод имени входного файла:’);
readln(filename);
assign(f1, filename);
reset(f1); { без защиты }
write(‘ввод имени выходного файла:’);
readln(filenam2);
assign(f2, filenam2);
rewrite(f2);