![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
у меня возник такой вопрос - как представлена информация в типизированных файлах? поясню: Программа создает файл согласно описанной структуре: Код:
Type
typeRaiting = 0..10;
typeCover = record
Pic : array [0..RAZMER_BYTE] of Byte;
Size : Integer;
end;
typeFilms=record
Name,
Country,
Genre,
Producer,
FilmCompany : String[60];
Description : String[255];
BoxOffice,
Year : Integer;
PersonalRating : typeRaiting;
Cover : typeCover;
FileLocation : String[255];
end;typeFilms - это и есть структура одной записи файла. Создание, редактирование, сохранение, чтение файла - это все работает отлично, захотелось узнать, а как же представлена информация в самом файле? В каком порядке данные попадают в файл, чем разграничены записи и т.п.? Объясните пожалуйста !Или укажите ЧТО мозно почитать по поводу этого? |
|
#2
|
|||
|
|||
|
Данные записываются в бинарном виде.
Ограниченны размером структуры, т.е. никакого ограничения, в принципе, нет. |
|
#3
|
|||
|
|||
|
Цитата:
Т.е. если размер первой записи равен 60 символов, то в файл сохраняется 60 байт потом следующая, следующая и так далее пока полностью не записана все данные, потом переходим к следующей записи ... Если одна запись равна 1000 байт, то что бы обратится к 7 - программа начинает считывать с 7000-го байта? |
|
#4
|
||||
|
||||
|
С небольшим уточнением, если не указано packed в записи, и в ней имеются данные разных величин (Byte, Word, DWORD), они будут выравнены в максимальную сторону.
|
|
#5
|
|||
|
|||
|
Цитата:
Не совсем понял, если не сложно по подробнее! Пожалуйста! |
|
#6
|
|||
|
|||
|
Цитата:
Цитата:
Имеется ввиду, что реальный размер Record`а может быть больше, чем сумма размеров его частей, если не указано packed. Архитектура x86 позволяет считывать данные с любого адреса, но вообще говоря, адреса переменных(и полей записи) типа word должны быть чётными, адреса переменных типа DWord и Single должны делиться на четыре, адреса переменных типа Int64 и Double должны делиться на восемь. И компилятор может вставлять в запись дополнительные безымянные поля для выполнения этого. |
|
#7
|
|||
|
|||
|
Цитата:
Огромное спасибо, очень развернуто и понятно! Всем остальным так же СПАСИБО! |