- •Описание записи (record).
- •Работа с файлами. Общие сведения о файлах.
- •Процедуры и функции для работы с файлами.
- •Особенности обработки типизированных файлов.
- •Создание файла.
- •3. Добавление записей к файлу (в конец файла)
- •If { корректировка подтверждена }
- •If {…запись не удаляется…}
- •Корректировка с использованием последовательного доступа.
- •If {запись не корректируется}
- •О взаимосвязи записей основного обрабатываемого файла и записей файлов-справочников
- •Файлы без типа.
Процедуры и функции для работы с файлами.
ASSIGN (имя_файла_в_программе, имя_файла_на_носителе) – процедура устанавливает связь между файловой переменной (имя_файла_в_программе) и файлом на носителе.
Здесь:
имя_файла_в_программе - это файловая переменная, т.е. идентификатор, объявленный в программе как переменная файлового типа.
имя_файла_на_носителе – текстовое выражение, содержащее имя файла . Перед именем файла на носителе может быть указан полный путь к файлу – имя диска, имена каталогов вышестоящих уровней, имя текущего каталога. Это единственное место в программе, где используется имя физического файла на носителе. Во всех остальных местах используется имя логического файла, имя файла в программе.
Примеры применения.
Закрепление постоянного файла за программой:
ASSIGN ( F_PROG, ‘CONST_F.DAT’);
ASSIGN ( F_PROG, ‘C:\DIR1\CONST_F.DAT’);
Примечание: 1) если задано имя файла без префикса, то файл располагается в текущем каталоге; 2) при таких вариантах программа зависима от физического файла, с которым она работает.
Возможность работы с различными файлами данной структуры:
WRITELN (‘ Введите полное имя файла на диске’);
READLN ( FILENAME);
ASSIGN ( F_PROG, FILENAME);
Пользователь с клавиатуры вводит полное имя с префиксом, например, C:\DIR1\CONST_F.DAT. Таким образом, достигается независимость программы от конкретного физического файла, т.е. можно обрабатывать различные физические файлы заданной структуры, одинаковой для всех обрабатываемых файлов
RESET (имя_файла_в_программе) – процедура открытия существующего файла
для чтения при последовательном доступе и
для чтения и записи при прямом доступе.
Указатель файла при этом устанавливается на первую запись (с 0 номером). Если файл с таким именем не существует, то происходит аварийное завершение программы.
REWRITE (имя_файла_в_программе) – процедура открытия создаваемого файла для записи. Если файл с таким именем не существовал, то он создается и начинается заполнение файла. Если файл с таким именем уже существовал, то он стирается, и заполнение файла начинается заново. Указатель файла устанавливается на первую запись (запись – она же компонент файла).
READ (имя_файла_в_программе, имя_переменной) – процедура чтения очередного компонента файла в переменную, тип которой должен совпадать с типом компонентов файла. В принципе, переменных может быть указано несколько:
READ (имя_файла_в_программе, имя_переменной [,имя_переменной…] );
Указатель файла при этом передвигается на количество прочитанных компонентов (сколько переменных в списке).
READLN (имя_файла_в_программе, имя_переменной) применяется для чтения записей из текстового файла.
WRITE (имя_файла_в_программе, имя_переменной
[,имя_переменной…] );
– процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонентов. На носитель (диск) записывается копия участка оперативной памяти, в которой находился очередной компонент (запись) файла, то есть внутреннее, машинное представление её информации, поэтому просмотр содержания файла простыми средствами (программа Блокнот, просмотр по клавише F3 в файловых менеджерах) практически невозможен. Необходимо наличие программы чтения записей из файла и вывода их содержания в отредактированном виде, например, на дисплей.
WRITELN (имя_файла_в_программе, имя_переменной) – применяется для записи компонента в текстовый файл.
SEEK (имя_файла_в_программе, номер_компонента) – процедура установки текущего указателя для чтения или записи требуемого компонента файла (в качестве номера компонента используется физический номер записи, или номер участка внутри файла). Используется для организации прямого доступа к записям типизированного файла, но может использоваться и при последовательном доступе записям типизированного файла.
CLOSE (имя_файла_в_программе) – процедура закрытия файла. Она обязательно должна использоваться после окончания работы с файлом, в особенности после создания файла, иначе может произойти потеря данных, находящихся в последнем буфере.
В одной программе файл может быть открыт и закрыт несколько раз с разными назначениями.
FILEPOS (имя_файла_в_программе) – функция определения номера текущей записи типизированного файла.
FILESIZE (имя_файла_в_программе) – функция определения общего количества записей типизированного файла.
EOF (имя_файла_в_программе) – функция определения признака конца файла (End Of File). Получает значение TRUE при чтении последней записи файла.
EOLN (имя_файла_в_программе) – функция обнаружения конца строки в текстовом файле (End Of Line). Имеет значение TRUE, если найден конец строки.
IORESULT – функция возврата условного признака последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает нуль. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а {$I+} – включает автоконтроль ошибок. Если автоконтроль отключен и операция ввода-вывода привела к возникновению ошибки, все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT. Функция, как правило, применяется для контроля существования файла, с которым предстоит работать.
Пример проверки существования файла
{$I-}
RESET (<имя файла>);
{$I+}
IF IORESULT = 0
THEN { файл существует }
BEGIN
{ соответствующие действия }
. . .
END
ELSE { файл не существует }
BEGIN
{ другие соответствующие действия }
. . .
END
Внимание! «Соответствующие действия» зависят от решаемой задачи!
ERASE (имя_файла_в_программе) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт (используется модуль DOS).
RENAME (старое_ имя_файла_на_носителе,
новое_имя_файла_на_носителе) – процедура для переименования файла. Используется после закрытия файла (используется модуль DOS).
Типы файлов в Паскале.
В Турбо Паскале предварительно определен следующий стандартный тип:
TYPE
TEXT = FILE OF CHAR;
В системе программирования Паскаль различаются 3 вида файлов:
файлы с типом записей (типизированные файлы);
Type
Rec = record
Inf1 : integer;
Inf2 : string [20];
End;
Var
Zap : rec; { выделение места в ОП
под компонент файла,
т.е. место для одной записи файла}
F1 : file of rec; { файл со структурой компонента,
логическойзаписи типа REC }
текстовые файлы со строками неопределенной длины;
Var f2 : text;
файлы без типа для передачи данных блоками записей.
VAR F3 : FILE;
