Здавалка
Главная | Обратная связь

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



Они предназначены для хранения данных только одного типа Паскаля: файл целых чисел, вещественных чисел, символов, массивов одного размера, строк одной длины, записей. Не существует только файла файлов и файла объектов.

Перед началом работы с файлом его необходимо описать (объявить), указав его имя и тип компонентов (элементов).

Объявить файл можно двумя способами:

1.указанием его имени и типа в разделе описания переменных Var :

Var f_int : File Of Integer; описан файл целых чисел f_int,

f_int – имя логического файла – файловой переменной

Внимание! При описании файла его размер не указывается.

Структура файла целых чисел:

 

EOF – End Of File – метка конца файла: символ с кодом 26 (CTRL+Z).

Var f_char : File Of Char; описан файл символов f_char,

f_char – имя логического файла –
файловой переменной

Структура файла символов:

 

2.указанием его типа в разделе определения типов TYPE и имени – в разделе описания переменных Var :

Type TFile_int : File Of Integer;

Var f_int : TFile_Int;

 

Таким образом, можно перечислить отличия файла от, например, массива:

· файлы располагаются во внешней памяти – сохраняются после окончания работы программы,

· при описании файлов размеры их не задаются, они могут изменяться при работе программы,

· текущее количество элементов файла в каждый момент работы программы неизвестно, но всегда известно, где конец файла (метка EOF),

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

Перед началом работы с файлом необходимо связать имя логического файла (файловую переменную) с физическим файлом на внешнем носителе:

Assign(имя файловой переменной, ‘путь к физическому файлу’);

Assign(f_int,’D:\User\f_int.dat’);

f_int – имя файловой переменной (логического файла),

D:\User\f_int.dat - полный путь к физическому файлу на внешнем носителе:
диск D:
директория (папка) User
файл f_int_dat.

Внимание! Желательно совпадение имени физического файла и имени файловой переменной; расширение имени типизированного файла .dat.

После установления пути к физическому файлу его можно открыть:

а)открытие нового файла для записи в него данных:

ReWrite(f_int);

При этом на внешнем носителе создается новый физический файл с заданным именем. Если файл с таким же именем уже существовал, то он очищается. С каждым файлом связан указатель текущего элемента (записи). В этом случае этот указатель становится в начало файла – элемент с номером 0.

Внимание! Нумерация элементов файлов начинается с нуля!

 

б) открытие существующего файла для чтения и записи в него данных:

ReSet(f_int);

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

Запись в открытый для записи файл осуществляется оператором

Write(файловая переменная, имя записываемой переменной);

Например,

Write(f_int, n); записать в файл f_int значение переменной n

Внимание! Оператор WriteLn использовать нельзя.

В этом случае значение переменной n записывается в файл на то место, где стоит указатель текущей записи. Если там была какая-то запись, то она заменяется новой. После записи указатель автоматически перемещается на следующую позицию. Если указатель перед этим находился на метке EOF - в конце файла, то новая запись помещается в конец файла и файл автоматически расширяется.

Из открытого для чтения файла можно прочитать все записи и вывести их, например, на экран:

ReSet(f_int); открываем файл f_int для чтения

While Not(EOF(f_int) Do пока не конец файла f_int

Begin

Read(f_int,n); читаем из него очередную запись в переменнуюn

Write(n:5); выводим прочитанное значение на экран

End;

WriteLn; текстовый курсор – в начало новой строки
на экране

Внимание! Оператор ReadLn при чтении типизированных файлов использовать нельзя.

Таким образом, типизированный файл читается с помощью цикла с предусловием While. Условие окончания цикла – чтение метки конца цикла EOF.

После окончания работы с файлом он должен быть закрыт оператором:

Close(файловая переменная);

Например,

Close(f_int);

Пример записать в целочисленный файл несколько чисел, вводимых с экрана. Конец ввода – число 0. Прочитать эти числа из файла и вывести их на экран в одну строку.

Интерфейс программы:

Введите число: 3

Введите число: -1

Введите число: 5

Введите число: 12

Введите число: -6

Введите число: 0

Введены числа:

3 -1 5 12 -6

Программа:

Program File_1;

Uses CRT;

Var n : Integer;

f_int : File Of Integer;

Begin

ClrScr;

Assign(f_int, ‘d:\User\f_int.dat’);

ReWrite(f_int);

Repeat

Write(‘Введите число:’);

ReadLn(n);

If (n <> 0)

Then Write(f_int,n);

Until (n=0);

ReSet(f_int);







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.