Бинарный файл что это

Бинарный файл что это

22. Записи. Двоичные файлы

Как и массивы, записи относятся к составным типам данных. Запись складывается из фиксированного числа элементов, именуемых полями. Каждое поле является объектом несложного типа данных — в большинстве случаев, строчок либо число.

Значительно то, что в одну запись смогут входить поля разного типа, в отличие от массива, все элементы которого однотипны. К примеру, записью можно считать строчок экзаменационной ведомости:

Борисова Ю.А.     4    5    5

Эта запись складывается из четырех полей: одно поле — строко вого типа (инициалы и фамилия студента), остальные три поля — числовые (оценки студента по трем дисциплинам).

Описанию переменной типа запись предшествует определение типа посредством оператора type. Для отечественной записи это описание имело возможность бы выглядеть следующим образом:

type zap = record

fam: string;

m, inf, h: integer;

end;

Тут zap — имя нового типа данных, а fam. m. inf и h — имена полей записи. Служебные слова record. end в этом случае играют роль операторных скобок, в которых записываются поля записи с указанием их типов.

Не весьма комфортно то, что для каждой дисциплины введено отдельное поле. Введем тип данных student. где эта неприятность решена применением в качестве поля массива balls (баллы студента по трем дисциплинам):

type student = record

fam: string;

balls: array [1..3] of integer;

end;

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

var str. student ;

либо массив таких переменных:

var students: array [1..20] of student;

Для обращения к отдельным полям переменной типа запись употребляется селектор записи — знак точки, разделяющий поля и наименования записи:

str. fam

— обращение к полю фамилия записи str ;

students [1]. fam

— обращение к полю фамилия первого элемента массива записей students ;

students [ i ]. balls [2]

— вторая оценка i- го элемента массива записей students.

С полем записи, как и с элементом массива, разрешены все допустимые в языке операции над переменной соответствующего типа.

Чтобы определить количество в байтах, занимаемый записью в оперативной памяти либо на твёрдом диске, направляться воспользоваться стандартной функцией sizeof. передав ей в качестве довода имя типа записи:

sizeof ( student ) — вернет размер памяти в байтах, занимаемый одной записью типа student.

Значительно чаще записи употребляются при работе с базами данных, хранящимися на твёрдом диске. Мы уже можем просматривать и записывать текстовые файлы, но хранение записей в текстовом файле, в большинстве случаев, некомфортно и требует любой раз сложного разбора прочтённых строчков. Исходя из этого для действенной работы с файлами записей направляться познакомиться с остальными типами файловых переменных Паскаля.

В общем виде файл данных в Паскале является совокупностью однотипных компонент. В зависимости от метода объявления файловой

переменной возможно выделить три вида файлов.

  • Типизированные файлы. Для них тип компонент указывается конкретно в описании файловой переменной. Описание в этом случае имеет форму: var файловая_переменная: file of тип_компонент_файла;

К примеру, в случае если компоненты файла имеют тип записи zap. то разделе описания переменных возможно заявить файловую переменную следующим образом:

var f: file of zap;

Естественной порцией данных для для того чтобы файла будет одна запись типа zap. что весьма комфортно. Типизированный файл возможно заявлен и как совокупность записей несложного типа:

var f2: file of real;

Тут заявлен файл, содержащий вещественные числа во внутреннем представлении. Размер одной записи для того чтобы файла будет равен 6 байт (размер памяти, отводимый под величину типа real ).

  • Нетипизированные файлы. Задаются стандартным типом file без указания типа компонент, к примеру:

var f. file ;

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

  • Текстовые файлы. Привычные нам по гл. 21 текстовые файлы задаются стандартным типом text. к примеру:

var f. text ;

Компонентами текстового файла являются строки переменной длины. По окончании ввода каждой строки нажимается клавиша Enter. Исторически сложилось так, что наряду с этим в финиш каждой строки дописывается два невидимых знака: знак с кодом 13 ( CR. возврат каретки) и знак с кодом 10 ( LF. перевод строчка). Доступ к строчкам осуществляется последовательно, начиная с первой. Число строчков в текстовом файле возможно произвольным.

Последним знаком файла возможно особый маркер EOF ( E nd Of File) с кодом #26.

Значительно выделить то, что первый и второй вид файлов — двоичные. а не текстовые:

Текстовый файл содержит лишь алфавитно-ряд и цифровые символы особых (такие, как возврат каретки, перевод строчка, табуляция). Содержимое файла конкретно доступно для чтения в любом редакторе текста либо в окне консоли.

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

К примеру, следующая несложная программа объявляет двоичный файл, складывающийся из вещественных чисел и записывает в него числа от 1 до 10 включительно:

var f:file of real; r:real;

begin

assign (f,’real.dat’);

rewrite (f);

r:=1;

while r

write (f,r); r:=r+1;

end;

close (f);

end.

Так как размер величины типа real в памяти равен 6 байтам, полученный файл real. dat будет иметь размер 60 байт и содержать внутренние машинные представления указанных чисел (рис. 22.1).

Рис. 22.1. Двоичный файл

Никакого текстового смысла в данной записи нет, дабы ее трактовать, необходимо открыть файл в редакторе, поддерживающем 16-ричное машинное представление чисел либо дамп (рис. 22.2).

Рис. 22.2. Шестнадцатеричный дамп двоичного файла

Источник: pers.narod.ru

запись информации в двоичный файл

Важное на сайте:

Самые интересные результаты статей, подобранные именно по Вашим интересам: