
- •Лекция 10. Файлы
- •Сущность файлов и их особенности
- •Связь файла с программой осуществляется через файловую переменную, которая должна быть объявлена с
- •Типизированные файлы.
- •запись 1 запись 2 запись 3 . . . .
- •Текстовые файлы
- •Файлы без типа
- •Общая технология работы с файлами
- •• для типизированных файлов и файлов без типа
- •3.Работа с файлом (чтение/запись)
- •• Типизированные файлы
- •4. Закрытие файла
- •Стандартные средства работы с файлами
- •Для изменения (редактирования) записи чаще всего требуется найти запись, в которую предполагается внести
- •BEGIN
- •//1. Assign
Лекция 10. Файлы
1.Сущность файлов и их особенности.
2.Типизированные файлы.
3.Текстовые файлы.
4.Файлы без типа.
5.Общая технология работы с файлами.
6.Стандартные средства работы с файлами.
Сущность файлов и их особенности
Файлом называется именованная последовательность данных, расположенная, как правило, на внешних носителях информации.
Файлы это одновременно и способ и место хранения информации. Чтобы установить связь файла с программой, написанной на алгоритмическом языке, необходимо указать оба этих атрибута.
Имя файла, включая расширение, указывается в соответствии с требованиями операционной системы в виде [<путь к файлу>] < имя файла>.< расширение>. Если путь не указан, считается, что файл расположен в текущем каталоге.
Способ хранения информации может быть разный, но в DELPHI поддерживаются только три формата внутреннего представления данных
1.Текстовые файлы
2.Файлы без типа
3.Типизированные файлы
Связь файла с программой осуществляется через файловую переменную, которая должна быть объявлена с одним из
перечисленных выше типов файла.
•Элементами текстовых файлов являются строки переменной длины.
•Элементами типизированных файлов являются записи постоянной длины, в т.ч. и строки постоянной длины.
•Элементами файлов без типа являются блоки памяти фиксированного размера.
Типизированные файлы.
Формальный синтаксис объявления файловой переменной для типизированного файла
Var
<Имя файловой переменной> : File of <имя базового типа>;
Поскольку базовый тип имеет фиксированную длину, все записи будут занимать одно и то же количество байт (длина в байтах возвращается функцией L:=SizeOf(<имя
типа>)).

запись 1 запись 2 запись 3 . . . . |
запись N-1 запись N |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L - длина записи.
Тогда относительный адрес начала записи i можно вычислить по формуле
Ai=L*(i-1)
и выполнять прямое обращение к данным этой записи. По этой причине типизированные файлы называются файлами прямого доступа.

Текстовые файлы
Формальный синтаксис объявления файловой переменной
Var
<Имя файловой переменной> : Text;
Предназначены исключительно для обработки строк переменной (фактической) длины. Все записи файла имеют разную длину.
запись 1 |
запись 2 |
запись 3 . . . . запись N |
Про длину записи нельзя сказать ничего определенного. Невозможно вычислить адрес записи i и выполнять прямое обращение к данным этой записи, иначе как последовательно прочитав предыдущие записи. По этой причине текстовые файлы называются файлами последовательного доступа.
Файлы без типа
Формальный синтаксис объявления файловой переменной
Var
<Имя файловой переменной> : File;
Могут рассматриваться как аналог типизированных файлов, у которых элементом базового типа является блок – фиксированная последовательность байт длиной по умолчанию 128 байт. Размер блока может быть изменен при открытии файла. Файлы без типа обычно используются для сохранения или загрузки большого количества информации, ответственность за сохранение структуры данных, при этом, ложится на программиста. Файлы без типа оптимизированы по скорости чтения/записи.

Общая технология работы с файлами
1. Установить связь файловой переменной с конкретным файлом
Программа с |
|
|
|
Устройство с файлом |
||||||
|
|
|
FileName.ext, |
|||||||
файловой |
|
|
|
|||||||
|
|
|
управляемое ОС |
|||||||
переменной f |
|
|
|
|||||||
AssignFile(f,‘FileName.ext’) |
||||||||||
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

• для типизированных файлов и файлов без типа
Reset(<файл. перем.> , [<физическая длина записи>]); - открытие существующего файла для чтения и изменения существующей записи с установкой в начало файла; старое содержимое файла сохраняется;
Rewrite(<файл. переем.>, [<физическая длина записи>]); - создание нового файла с установкой в начало файла; старое содержимое уничтожается;
С помощью необязательного параметра [<физическая длина записи>] можно указать длину записи в байтах, чтобы
оптимизировать по скорости операции чтения/ записи. Строго говоря, этот параметр можно указывать и для текстовых файлов, да только толку от этого мало, так как длина записи у них все время разная.