ДОСТУП К ФАЙЛАМ
РАБОТА С ФАЙЛАМИ. ФАЙЛОВЫЙ ТИП
. . .
Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, электронного "виртуального" диска), либо логическое устройство - потенциальный источник или приемник информации.
По содержанию, под файлом понимают любой набор элементов одного и того же типа. Число элементов, называемое длиной файла, не фиксировано. В этом основное отличие файла от массива. Файл, не содержащий ни одного элемента, называется пустым: его длина равна нулю.
Файлы по методу доступа к их элементам подразделяются на файлы последовательного и прямого доступа. В стандартном языке Паскаль определены файлы только последовательного доступа, в которых каждый элемент становится доступным только после перебора всех предыдущих элементов.
В Турбо Паскале можно работать и с файлами прямого доступа, которые позволяют обращаться к каждому элементу непосредственно по его порядковому номеру в файле.
Файлы должны быть описаны в разделе описаний программы. Описание файлов имеет следующий вид:
var
имя_файла : file of базовый_тип;
В качестве базового типа элементов файла можно использовать любой тип данных (как простой, так и сложный) за исключением типа file.
Вообще говоря, файловый тип или переменную файлового типа можно задать одним из трех способов:
<имя> = file of <тип>;
<имя> = TEXT;
<имя> = File;
В зависимости от способа объявления можно выделить три вида файлов:
1) типизированные файлы (задаются предложением FILE OF ...);
2) текстовые файлы (определяются типом TEXT);
3) не типизированные файлы (определяются типом FILE).
Файлы, а также логические устройства становятся доступны программе только после выполнения особой процедуры открытия файла (логического устройства). Эта процедура заключается в связи заранее объявленной файловой переменной (для ее включения в работу программы) с именем существующего или вновь создаваемого файла (на физическом или логическом устройстве), а также в указании направления обмена информацией: чтение из файла или запись в него.
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN (назначить):
Assign(<файловая переменная>, <имя файла или логического устройства>);
Здесь <ф. п.> - файловая перемененная (правильный идентификатор, объявленный в программе как переменная файлового типа);
<имя файла или л.у.> - текстовое выражение, содержащее имя файла или логическое устройство.
Доступ к элементам файла осуществляется через указатель файла (буферная переменная). При чтении или записи этот указатель перемещается к следующему элементу и делает его доступным для обработки. В каждый момент доступен для записи (чтения) только тот файл, на который установлен указатель.
Так как, по определению, число элементов файла не задается, то в Турбо Паскале для нахождения конца файла введена стандартная функция
eof(var f : file) : boolean;
Когда достигли конца файла, eof принимает значение True, в противном случае - False.