Типизированные файлы
Они предназначены для хранения данных только одного типа Паскаля: файл целых чисел, вещественных чисел, символов, массивов одного размера, строк одной длины, записей. Не существует только файла файлов и файла объектов. Перед началом работы с файлом его необходимо описать (объявить), указав его имя и тип компонентов (элементов). Объявить файл можно двумя способами: 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 - полный путь к физическому файлу на внешнем носителе: Внимание! Желательно совпадение имени физического файла и имени файловой переменной; расширение имени типизированного файла .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 Все права принадлежат авторам размещенных материалов.
|