русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 2135; Нарушение авторских прав


Типизированный файл рассматривается как благоустроенная последовательность элементов одного типа.

Типизированные файлы имеют строгую внутреннюю структуру. Во время записи у него записывается машинное представление компоненту (бинарный код), будь то число, символ, массив. Его структура линейная: запись следует за записью, и компоненты ничем не отличаются один от другого. Число компонент файла может изменяться, т.е. заранее не фиксируется, как число элементов массива. Прибавляются записи лишь в конец, а заміщуються - любые существующие в файле записи.

type Fb =file of byte;

 

 
 

type Fc = file of char

Type t = record

a:byte;

b:char;

c:integer;

end;

FT = file of T;

 

 

Поскольку компоненты одного типа, а значит и одного размера, возникает возможность прямого доступа к ним за номерами позиций. Прямой доступ означает возможность позиціонувати в теле файла текущий указатель на заданную запись. Нумеруются позиции файлового указателя целыми числами, начиная из нуля. Реальный номер записи всегда на единицу больший за номер позиции.

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

Чтение из типизированных файлов выполняется лишь процедурой read, а запись - лишь процедурой write.

Read(файловая_сменная, список_введение);

При этом единицей чтения записи может быть лишь сменная того же типа, что и тип файла.

Применение к бинарным файлам процедур Readln или Writeln есть недопустимым, поскольку для таких файлы не обозначены понятие строки.

При считывании в каждую сменную из списка процедуры read указатель текущей позиции в файле перемещается на следующий элемент.

Если файловый указатель находится за последним элементом, то выполнение процедуры приводит к ошибке времени выполнения.



Процедура write для типизированных файлов имеет формат

write (файловая_сменная, список_вывод);

Выполняя запись в файл, следует помнить, что при записи каждой сменной указатель текущей позиции в файле, как и при чтении, перемещается на следующий элемент. Если файловый указатель находится за последним из элементов, т.е. в конце файла, то при выполнении процедуры файл расширяется. Запись констант к бинарному файлу есть недопустимым. Например, для того чтобы к файлу записать значение 1, нужно это значение присвоить сменной, имя которой указано в списке вывода процедуры Write.

Для работы в файлах с прямым доступом разработаны следующие процедуры и функции (пусть сменную k описано как longint):

Функция FilePos возвращает номер позиции указателя в файле (позиции нумеруют из нуля!). Результат функции longint. Синтаксис указателя функции:

FilePos(файловая_сменная);

Пусть есть следующие объявления:

Var f:file of byte;

k:longint;

Если файловый указатель указывает на четвертый элемент, то оператор

k:=filepos(f);

возвратит значение k=3. Так как номер элемента четвертый , а позиция третья.

Функция filesize возвращает размер файла (число элементов при счету от единицы!). Результат функции longint. Синтаксис указателя функции функции:

FileSize(файловая_сменная):

Для предыдущего примера оператор

k:=filesize(f);

возвратит значение k=6, так как количество компонент считается начиная из единицы.

Процедура seek перемещает указатель текущей позиции в файле на позицию с заданным номером (при счету от нуля!)

Seek(файловая_сменная, номер_позиции);

Если для предыдущего примера использовать оператор

seek(f,2);

Файловый указатель будет установлен на позицию 2, а компонент файла номер 3

 

 

Процедура

Truncate(файловая_сменная);

удаляет все компоненты файла от текущего компонента до конца файла.

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

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

Пример 3. Создать файл из целых чисел. Введение данных осуществлять пока не будет нажатый символ 'Y'.

program File_tip_sozd;

{$APPTYPE CONSOLE}

uses SysUtils;

var f:file of integer;

c:integer;

s:char;

name:shortstring;

begin

writeln('Enter name of file');

//Ввод имени файла

readln(name);

//Связывание логического файла с физическим +расширение

assign(f,name+'.dat');

//Открытие файла для записи

rewrite(f);

repeat

writeln('Enter chislo');

readln(c);

//Запись в файл - использовать только write

write(f,c);

// Для окончания ввода в файл нажать большую букву Y

writeln('End of Enter - Y/N');

readln(s);

until s='Y';

close(f);

writeln('Press Enter');

readln

end.

 

 

Распечатать файл. Найти сумму положительных элементов файла. Найти разность между первым и последним элементом.

program File_tip_rabota;

{$APPTYPE CONSOLE}

uses

SysUtils;

var f:file of integer;

s,i,L,c,c1:integer;

name:shortstring;

begin

writeln('Enter name of file');

//Ввод имени файла

readln(name);

//Связывание логического файла с физическим +расширение

assign(f,name+'.dat');

//Открытие файла для чтения

reset(f);

//Определяем длину файла

L:=filesize(f);

For i:=1 to L do

begin

//Чтение из файла - использовать только read

read(f,c);

//вывод содержимого файла на консоль

write(c,' ');

end;

writeln;

//закрываем файл и устанавливаем указатель на начало файла - reset

reset(f);

S:=0;

For i:=1 to L do

begin

//Чтение из файла - использовать только read

read(f,c);

if c>0 then s:=s+c;

end;

writeln('Summa dodatnix ',s);

//устанавливаем указатель на первый элемент

seek(f,0);

read(f,c);

//Устанавливаем указатель на последний элемент

seek(f,L-1);

read(f,c1);

close(f);

//Разница первого и последнего

writeln('Pervi - posled ',c-c1);

writeln('Press Enter');

readln

end.

 

 



<== предыдущая лекция | следующая лекция ==>
 | Сетевые устройства


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.