77973

Типизированные файлы с идентичными структурами

Лекция

Информатика, кибернетика и программирование

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

Русский

2016-09-14

30.5 KB

0 чел.

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

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

Объявляем файл байтов:

var f:fileof byte

` b:Byte;

Ассоциируем файловую переменную с физическим фалом:

AssignFile(f,’c:\myfile.bin’);

Теперь мы можем либо перезаписать/создать файл:

Rewrite(f);

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

Reset(f);

Обратите внимание, что функцияReset хотя и имеет такой же формат как и для текстовых.

Функции работы с файлом:

read(f,b); - прочитать 1 байт

write(f,b); - записать 1 байт

seek(f,100); – поставить текущее положение считывания/записи на сотый байт

size(f); - прочитать количество байт в файле

eof(f); - узнать не является ли байт последним

Все эти функции не работают с файлами большими 2Gb

После работы файл надо закрыть;

CloseFile(f);

Приведенные выше механизмы будут работать с любым файлом, так как любой файл можно считать файлом байтов. Теперь где это можно использовать? В принципе везде, но в подавляющем большинстве случаев это будет очень неудобно, ведь скорость считывания при чтении по байтам будет на порядки более низкой чем другими способами. Однако в некоторый случаях этот способ может быть очень полезен. Например в программе вам надо заменить 100й байт файла на другой, или прочитать 100й байт файла, например во всяких читерских программах, при взломе и т.п. Здесь такой доступ будет весьма удобен. Гораздо более интересным представляется дальнейшее развитие технологии типизированных файлов(их еще 15 лет назад называли «Файлы прямого доступа»). Представим себе, что файл состоит не из байт а из более сложных структур. Например мы не имеем некотурую иформацию в виде;

TypeMyRec=Record

Name:string[100];

Age:byte;

Membership:Boolean;

Accounts:array[1..10]of integer;

End;

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

VarMyVar:MyRec;

и файл этого типа:

Var f:File of Rec;

Теперь мы можем читать и писать сразу целую структуру, абсолютно так же как и если бы это был один байт:

AssignFile(f,’c:\MyFile.rec’);

Rewrite(f);

My Var.Name:=’Vitaly’;

My Var.Age:=33;

My Var.Membership:=True;

My Var.Accounts[1]:=12345;

My Var.Accounts[2]:=34985;

Write(f,My Var);

Closefile(f);


 

А также другие работы, которые могут Вас заинтересовать

57919. Використання формул скороченого множення для розкладання многочленів на множники 47.5 KB
  Мета: домогтися усвідомлення учнями того факту що вивчені формули скороченого множення застосовуються для розкладання на множники многочленів певного виду...
57920. Вікова періодизація людини (зрілий, похилий і старечий вік). Феномен життя і смерті 104 KB
  Індивідуальна робота робота учнів по картках Встановити відповідність вікової періодизації людини: Назва вікового періоду Віковий період у роках новонароджені...
57921. Cимвол политики - королева Виктория 52 KB
  Учитель. В информационных папках учащихся лежат документы и задания каждой группе Учитель: помогут совершить экскурсию экскурсоводы и учащиеся групп согласно плану...
57922. Вулканізм і вулкани. Гарячі джерела, гейзери 67.5 KB
  Знати: причини утворення та будову вулканів, після вулканічні явища, сейсмічні пояси Землі. Вміти: показувати на карті згаслі та діючі вулкани, порівнювати гарячі джерела та гейзери.
57923. Вирусные болезни – глобальная опасность для человечества 58 KB
  Формирование предметных и ключевых компетентностей: обобщение знаний об особенностях строения и жизнедеятельности вирусов; значении вирусов в природе и жизни человека методах изучения вирусных болезней.
57924. Сравнение симптомов заболеваний, которые вызываются вирусами и бактериями. Профилактика инфекционных болезней человека 39.5 KB
  Цель урока: познакомить учащихся с симптомами методами диагностики и профилактики типичных бактериальных и вирусных заболеваний человека;– научить применять знания о процессах жизнедеятельности вирусов и бактерий для диагностики лечения...
57925. Води суходолу Північної Америки. Основні річкові системи. Великі озера, їх походження 69 KB
  Мета: сформувати в учнів систему знань про внутрішні води Північної Америки розкрити загальні особливості вод суходолу показати їх залежність від рельєфу та клімату нерівномірність розподілу на території материка...
57926. Основы объектно-ориентированного программирования. Создание формы 573.5 KB
  Цель: Сформировать у учащихся представление о среде программирования Visul Studio; освоить основные приемы создания форм получить практические навыки создания формы в среде программирования; формировать у учащихся информационную компетентность.
57927. Клітинний цикл. Мітоз 62.5 KB
  Німецький вчений Рудольф Вірхов стверджував що клітина може виникнути тільки з попередньої клітини в результаті її поділу. Відома його знаменита фраза усяка клітина –з клітини З таким поняттям як поділ клітини ви вже неодноразово зустрічались на уроках біології.