Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

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

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

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

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

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

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

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

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

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

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре 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).

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

В отличие от VisualBasic,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; //закрытие файла и окончание процедуры