Типизированный файлТипизированный файл - это файл, в котором записаны идентичные структуры. Типизированный файл можно создать только программным путем. Он состоит из записей фиксированной длины. Содержимое файла - это машинное представление данных. Типизированные файлы так же называют двоичными т.к. они содержат информацию в двоичном коде. С каждым типизированным файлом связана переменная - указатель. Указатель определяет смещение от начала файла в количестве прочитанных или записанных записей. При открытии файла значение указателя равно нулю, т.е. не выполнено ни одной операции ввода/вывода. Если только одна запись записана или прочитана, то значение указателя равно единице. Формат объявление файловой переменной Var Имя ф.п.: file of Тип записи файла; Тип записи это любой тип языка Pascal кроме файлового. Операции над типизированным файлом 1) Назначение файловой переменной физического файла Это связывание файловой переменной с файлом. Осуществляется аналогично связыванию для текстовых файлов. Связь файловой переменной с файлом устанавливается с помощью процедуры Assingfile. Формат процедуры: Assingfile(файловая переменная, имя файла); 2) Создание файла Создание типизированного файла осуществляется процедурой Rewrite(Ф.п.). Пример Var F: file of integer; Begin Assignfile(F,’A.Dat’); Rewrite(F); End. После выполнения программы в текущей папке появится файл A.dat. При открытии существующего файла процедурой Rewrite (файловая переменная) файл удаляется. Открытый этой процедурой файл допускает выполнение операции чтения и записи. 3) Открыть существующий для чтения и записи При открытии типизированного файла процедурой Reset(Ф.п.) данные файла доступны для чтения, но открытый таким образом файл допускает выполнение операции записи в файл. 4) Чтение данных из файла Осуществляется процедурой Read(Ф.п., Список переменных); Переменные в списке должны быть того же типа что и тип файла. Пример использования процедуры read Var F: file of integer; A:integer; B:real; Begin Assignfile(F,’A.Dat’); Reset(F); Read(F,A); Read(F,B); //Это будет ошибка т.к. тип переменной и файла различен. End.
5) Записать в файл Осуществляется процедурой Write(ф.п., список переменных); Переменные в списке должны быть того же типа что и тип файла Пример Var F: file of integer; A:integer; B:real; Begin Assignfile(F,’A.Dat’); Rewrite(F); A:=5; Write(F,A); End. 6) Закрытие файла Осуществляет процедура Closefile(Ф.п.). После выполнения этой операции доступ к данным файла невозможен, но связь файловой переменной и с физическим файлом сохраняется. 7) Определение кол-во записей в файле. . В типизированных файлах не рекомендуется использовать функцию Eof. При обработке всех записей файла, следует использовать функцию Filesize(ф.п.):Longint, которая возвращает количество записей в файле. Пример Прочитать и вывести все записи файла. Var F: file of integer; A,i:integer; Begin Assignfile(F,’A.Dat’); Reset(F); For I:=1 to filesize(F)-1 do Begin Read(F,A); Write(A,’ ‘) End; End. 8)Определение позиции в типизированном файле Осуществляет процедура filepos(Ф.п.):longint. Она возвращает номер записи в файле, к которой будет применяться операция ввода/вывода. Пример Var F: file of integer; A:integer; Begin Assignfile(F,’A.Dat’); Reset(F); Read(F,A); Write(Filepos(F)); //результат равен 1(позиция первая) End.
9) Организация прямого доступа В типизированных файлах можно выполнять операции чтения и записи к записям с произвольным номером, не выходящим за количество записей файла. Эту операцию выполняет процедура Seek(Ф.п.,N). Ее действие: осуществляет перемещение указателя в позицию N. N - это значение целого типа. Примеры использования процедуры Seek(F,0); //Указатель перемещается в положение 0 т.е. доступна первая запись файла Seek(F,Filesize(F)); //Переместит указатель в конец файла (за последнюю запись) Seek(F,5); //Указатель установится перед пятой записью.
|