Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

1.8.2.2. Типизированные файлы

Объявление файловой переменной

Вначале можно объявить файловый тип:

Type <имя файлового типа>=File Of <тип компонента>;

Далее объявляется файловая переменная (с указанным идентифи­ка­то­­ром) одним из вариантов (ссылкой и без ссылки на файловый тип):

Var <идентификатор> :<имя файлового типа>; //ссылка на файловый тип

Var <идентификатор>: File Of <тип компонента>;//без ссылки на тип

Обычно <тип компонента> является типом записи.

Открытие файла

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре AssignFile(F;S) (п.1.8.2.1).

Процедуры Reset(F), Rewrite(F) (п.1.8.2.1) открывают файл для чте­ния и для записи, соответственно.

Процедуры обработки файла

Read(F,<список ввода>)читает из открытого файла F в указанные пере­мен­ные из списка ввода такого же типа, что и компоненты файла.

Write (F,<список вывода>)записывает в открытый файл F значения из указанных переменных из списка такого же типа, что и компоненты файла.

Seek(F;N:Longint) ‑ устанавливает текущую запись файла под номером N (отсчет записей с нуля).

Закрытие файла осуществляется процедурой CloseFile(F).

Файлы последовательного доступа

Общая схема создания последовательного файла: открытие файла (AssignFile, Rewrite), цикл формирования и вывода записей (Write), зак­ры­тие файла (CloseFile).

Порядок чтения последовательного файла: открытие файла (AssignFile, Reset), цикл чтения и обработки записей (Read), закрытие файла (CloseFile).

Файлы прямого доступа

В отличие от Visual Basic, Delphi не имеет специальных фай­лов с прямым доступом, а используется последовательный файл, до­­пус­ка­ющий прямой метод доступа. Общая схема создания файла: cоз­дать пустой последовательный файл с максимально до­пустимым числом пус­тых запи­сей (форматирование файла), а затем создать после­до­ва­тель­ный файл и обращаться к записям по их поряд­ковому номеру, используя про­­цедуру Seek(F,<номер записи>), а затем Read или Write соответственно.

1.8.2.3. Текстовые файлы

Текстовый файл представляет собой набор строк. При создании файла в конце каждой строки ставится маркер конца строки EOLN из двух символов #13 (CR ‑ возврат к началу строки) и #10 (LF ‑ перевод строки), а в конце файла символ #26 (EOF ‑ конец файла). Числовые данные хранятся в символьном представлении, логические ‑ в виде True или False.

Объявление файловой переменной

Type <имя типа>=TextFile;

Var <идентификатор>:<имя типа>; //ссылка на файловый тип или

Var <идентификатор>: TextFile; //без ссылки на файловый тип

Открытие файла

Append(F) ‑ открытие расширяемого файла.

Аналогично типизированному файлу используются процедуры AssignFile(F;S), Reset(F), Rewrite(F), Reset(F) (п.1.8.2.1).

Процедуры ввода‑вывода

Read(F,<список ввода>)читает из открытого файла F в указанные пе­ре­мен­ные из списка ввода. При вводе числовых значений все окружающие пробелы, символы табуляции и маркеры конца строк пропускаются, и вы­де­ленная подстрока преобразуется в тип принимаемого поля ввода, при нарушении формата возникает исключительная ситуация. Ввод логических переменных не предуcмотрен.

ReadLn(F,<список ввода>)читает из открытого файла F в переменные из списка и переходит на начало следующей строки.

Write(F;VI[,V2]...) ‑ записывает в файл одно или более значений V1,V2,... .

Любой элемент списка может иметь форму:

<выражение>[:<минимальная ширина поля>[:<ширина дробной части>]]. Если размер выводимого значения больше минимальной ширины, то значение дополнится слева пробелами, если большую длину, то выводятся все символы без усечения. Если ширина поля не указана, то значения выводятся плотно без всяких разделителей.

Writeln ‑ выполняет те же действия, что и Write, а затем добавляет к файлу маркер конца строки.

Закрытие файла осуществляется процедурой CloseFile(F). Дополнительные процедуры

AssignPrn(F) ‑ информация выводится на принтер. Файл открывается процедурой Rewrite.

Eoln(F):Boolean - возвращает True при достижении конца строки файла.

Flush(F) ‑ выталкивает буфер файла в файл F и очищает буфер.

SeekEof(F):Boolean ‑ пропускает все пробелы, символы табуляции и маркеры конца строк и возвращает True при достижении конца файла.

SeekEoln(F):Boolean ‑ возвращает True при достижении конца строки файла, пропуская пробелы и символы табуляции.

SetTextBuf(F;Var B[;N:integer]) ‑ связывает буфер ввода/вывода B размера N с текстовым файлом F.

Пример ввода чисел из текстового файла ’Fact.txt’:

Var F:TextFile; M: Array [1..100] Of Real;I:Integer; //переменные

Begin AssignFile(F,’Fact.txt’); Reset(F); I:=1;

While Not Eof(F) and (I<=100) Do Begin Read(F,M[I]);I:=I+1; End;

CloseFile(F); ...

End; //закрытие файла и окончание процедуры