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);


 

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

31432. Дослiдження нелінійного опору лампи розжарення 149.5 KB
  Виміряти і порівняти опори холодної і розжареної лампи. Визначити залежність опору лампи розжарення від споживаємої потужності. Відомо що звичайні лампи розжарення найчастіше перегорають під час підєднання до джерела живлення.
31433. Дослiдження послiдовного резонансного LCR контуру з нелiнiйною iндуктивнiстю – феррорезонансного стабiлiзатора 72 KB
  Вимiряти напруги на iндуктивностi UL точки 12 конденсаторi UC точки 24 опорi UR точки 69 i на окремих дiлянках кола ULС точки 14 UСR точки 29 для рiзних значеннь напруги E джерела точки 19. Провести вимiри при змiнi E джерела точки 19 вiд мiнiмального до максимального значення E. Звернути увагу на стрибки напруги UL точки 12 i рiзну залежнiсть для прямого i зворотнього напрямку змiни E.
31434. Дослiдження коллекторного двигуна постiйного струму з постiйним магнiтом в якостi статора 103.5 KB
  Мета: Визначити спiввiдношення електричних та механiчних характеристик двигуна. Дослiдити вплив активного опору обмоток ротору на механiчнi залежностi двигуна. На малюнку наведено схему стенду для дослiдження двигуна.
31435. Схоластический период в философии средневековья. Фома Аквинский - основатель томизма 29 KB
  Почти все известные мыслители того времени были либо проповедниками либо преподавателями богословских школ. Он стремится упорядочить множество в единстве; вывести бытие бога из бытия вещей. Форма всех форм пус бог Субстанция абсолютная актуальность не допускающая какойлибо потенциальности это необходимость сущность блага. бог как источник всякого оформления Заявив что философия должна быть служанкой богословия он попытался поставить на службу религии и вере разум.
31436. Теория двойственной истины, ее автор и сторонники. Номиналисты и реалисты в средневековой философии. Роль их спора в развитии философского знания 32.5 KB
  Поскольку Бог по сравнению с природой рассматривался как сверхбытие или высшая реальность то основное внимание должно было сосредотачиваться прежде всего на Его познании. Это значит что абсурдно утверждать реальность человечности а не конкретных людей реальность сладкого а не конкретных предметов конфет сахара шоколада и т. В самом познании они выделили различные уровни эмпирический и теоретический пытались исследовать их специфику; впервые стали рассматривать познание как процесс а не как онтологическую реальность.1 1...
31437. Общая характеристика философии эпохи Возрождения (основные направления философской мысли, представители) 43.5 KB
  Время о котором идет речь философы Возрождения называли Новым связывая его с выработкой принципиально иных подходов к развитию искусства и науки. Эпоха Возрождения это эпоха зарождения капиталистических отношений создания национальных государств и абсолютных монархий Западной Европы эпоха глубоких социальных конфликтов. Специфика философской культуры Возрождения Философская мысль эпохи Возрождения охватывает три столетия: от раннего гуманизма XIV в.
31438. Основные черты западноевропейской философии XVII века. Философия Ф. Бэкона, Т. Гоббса, Д. Локка. Философия Р. Декарта 50 KB
  В философии на первый план выдвигаются проблемы теории познания гносеологии в частности: что значит знать что пролагает дорогу к истине ощущения или разум интуиция или логика аналитическим или синтетическим должно быть познание и т. Одна группа работ посвящена проблемам развития науки и анализа научного познания. Основной задачей философии Бэкон считал конструирование нового метода познания а целью науки принесение пользы человечеству. Фундаментом всякого познания по оценке Бэкона является опыт который должен быть...
31439. Основные черты западноевропейской философии XVIII века. Философские взгляды просветителя Ж.-Ж. Руссо. Утопический социализм Сен-Симона и Оуэна. Философия французского материализма XVIII века (Дидро, Гельвеции, Гольбах) 39 KB
  Руссо. Второй этап с середины 40х годов до конца 80х годов до Французской революции: Руссо Кондильяк и четыре великих французских материалиста Ламетри Дидро Гельвеций и Гольбах. К материалистам относятся вышеупомянутые четыре французских материалиста деистическую религию исповедовал Вольтер; новую разновидность подхода к христианству религию чувства развивал Руссо. Большинство просветителей склонялись к идеям реформизма меньшинство например Мелье Руссо были революционерами.
31440. Немецкая классическая философия: Кант, Фейербах 31 KB
  Для Канта этот вопрос сводится к вопросу о возможности чистой математики и чистого естествознания см. Кант Родоначальником немецкой классической философии стал Иммануил Кант 17241804 В философии Канта выделяется два периода:1 докритический и 2 критический. На первом этапе Кант выступает материалистом.