Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

3.6 Файлы

____________________________________________________________________

student = record

family, name, otch, group: string[20];

birthday: integer;

end;

var

a, b: student;

Обращение к элементам записи выполняется через уточненное (состав-

ное) имя.

a.family:= 'Иванов';

b.group:= 'ПОВТАС-1/08';

Чтобы не удлинять слишком текст программы, в Паскале предусмотрен оператор присоединения with. Это дает возможность определить кусок про-

граммы, внутри которого можно просто указывать требуемые поля записи, не указывая каждый раз при этом имя самой записи.

Синтаксис оператора:

with <список имен записей> do

begin

… {в этом блоке при обращении к полям записи не обязательно каж-

дый раз указывать имя записи}

………

end;

Пример:

type

student = record

family, name, otch, group: string[20];

end;

226

Глава 3 Более сложные элементы языка

____________________________________________________________________

var

a, b: student;

begin

with b do

begin

family:= 'Иванов';

group:= 'ПОВТАС-1/08';

end;

end.

3.6.2Файловые типы

Впрограмме для работы с файлами вводятся файловые переменные. Пере-

менные файловых типов необходимы тем программам, которым требуется чи-

тать данные с диска или записывать данные на диск. Синтаксис описания фай-

ловой переменной:

var <имя файловой переменной>: <тип файла>;

Различают три типа файлов:

текстовый файл;

типизированный файл;

нетипизированный файл Текстовый файл состоит из последовательности любых символов перемен-

ной длины, поделенных на строки. Каждая строка заканчивается специальным признаком "конец строки" – eoln (end of line).

Описание текстового файла имеет вид:

var <имя файловой переменной>: TextFile;

Типизированный файл состоит из элементов одного типа. Однако про-

граммист может создать свой тип данных – запись с разнородными типами по-

227

3.6 Файлы

____________________________________________________________________

лей данных. Таким образом, вообще говоря, в типизированном файле можно хранить данные различных типов, но только в структурированном виде – в виде записей.

Описание типизированного файла имеет вид:

var <имя файловой переменной>: File of <тип компонентов>;

И, наконец, в нетипизированных файлах хранятся данные любого типа и структуры. Описание нетипизированного файла имеет вид:

var <имя файловой переменной>: File;

Пример.

var

name: TextFile; // Текстовый файл

kol: File of integer; // Типизированный файл buf: File; // Нетипизированный файл

Файл name состоит из последовательности строк любых символов пере-

менной длины, файл kol из целых чисел, файл buf содержит данные любого типа и структуры, т.е. интерпретируются независимо от типа и структуры со-

держащихся в нем данных.

Для всех типов файлов определяется специальный признак "конец файла"

eof (end of file).

3.6.3 Процедуры для работы с файлами

3.6.3.1. Общие процедуры для работы с файлами всех типов

Для связи файловой переменной с файлом во внешней памяти использует-

ся процедура:

AssignFile(f, fname);

228

Глава 3 Более сложные элементы языка

____________________________________________________________________

где f - файловая переменная, fname - переменная типа string, содер-

жащая имя файла. Процедура AssignFile – связывает имя внешнего файла на диске с файловой переменной.

Общий вид имени файла:

<диск>:\<имя каталога>\<имя подкаталога>\...\<имя файла> (Windows) /<имя каталога>/<имя подкаталога>/.../<имя файла> (Linux)

Если указано только имя файла, то принимается текущий каталог и теку-

щее логическое устройство. Только после выполнения AssignFile можно обращаться к другим процедурам по обработке файлов.

AssignFile(name, 'Name.dat')

AssignFile(kol, 'C:\Work\Kol.dat')

AssignFile(data, '/home/user/data.dat')

Процедура Rewrite – создает и открывает новый файл.

Описание:

Rewrite(f)

f - является файловой переменной. Перед использованием Rewrite пере-

менная f должна быть связана с дисковым файлом с помощью процедуры

AssignFile. Если файл с таким именем уже существует, то он удаляется, а

на его месте создается новый пустой файл.

Процедура Reset- открывает существующий файл для чтения или запи-

си. Описание:

Reset(f)

где f - файловая переменная. Перед использованием Reset переменная f

должна быть связана с файлом на диске с помощью процедуры AssignFile.

После создания или открытия любого файла создается специальный указа-

229

3.6 Файлы

____________________________________________________________________

тель, с помощью которого отслеживается местоположение текущего элемента в файле. После чтения очередного элемента файла указатель автоматически пе-

ремещается к следующему элементу. После записи указатель автоматически перемещается к только что записанному в файл на диске элементу.

Процедура CloseFile (f)- закрывает открытый файл.

Функция Eof() в случае, если достигнут конец файла, возвращает зна-

чение true и false , если конец файла еще не достигнут.

Процедура Rename(f, newname); позволяет переименовать файл; newname - переменная типа string, содержащая новое имя файла;

Процедура Erase(f);- удаляет файл.

Функция IOResult – позволяет определить результат последней опера-

ции ввода/вывода. Возвращает 0, если ввод/вывод прошел успешно. Если опе-

рация ввода/вывода прошла неудачно, возвращает код ошибки.

Функция FileExists(fname) – позволяет определить существует ли файл fname на диске. Здесь fname - переменная типа string, в ней задается имя файла на внешнем устройстве, чаще всего на диске. Допускается указывать имя файла вместе с путем к файлу, например

FileExists('C:\Work\Data\Student.dat') – возвращает true,

если файл существует и false, если файл с этим именем в указанной папке не существует.

3.6.3.2. Процедуры для работы с текстовыми файлами

Текстовые файлы являются файлами с последовательным доступом. Дос-

туп к каждой строке возможен лишь последовательно, начиная с первой. Если нужно, например, прочитать строку n, то сначала нужно прочитать все n-1

строк.

Процедура Reset(f) открывает текстовый файл только для чтения.

Процедура Rewrite(f) создает новый файл (если файл с тем же именем

230

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773