Согласно первому способу порядок информации в файле определяется последовательным рассмотрением цепочек байтов файла с использованием таблиц.
По второму способу, порядок размещения информации в файле определяется комментированными описаниями оперативной структуры данных на языках программирования, из которых осуществляется запись информации в файл и в которые предполагается считывание информации из файла.
Согласно третьему способу описание выполненное по второму способу, дополняется текстами процедур "чтения/записи" файла.
Практика показала, что использование документации файлов, составленной сторонними фирмами по второму и особенно по третьему способу не вызывало затруднений.
"Чтение/запись" файлов со сложной произвольной организацией, как правило, производится последовательными порциями. Первая порция считывается в статическую запись оперативной памяти. Эту запись называют заголовочной (header). Она содержит один или несколько байтов идентификации, которые необходимы для проверки подлинности файла (его принадлежности к конкретным программам). В заголовочной информации может быть указана версия файла. Считывание последующих порций осуществляется как в статические, так и в динамические связные переменные, причем их длина может определяться информацией, полученной как из заголовочной порции, так и из ряда предшествующих порций.
Рассмотрим пример документирования файла представленной ранее электронной таблицы при помощи таблиц структуры файла. При этом алгоритмы процедур записи информации в файл и считывания информации из файла проектировались одновременно с оперативными структурами электронной таблицы.
При разработке структуры файла были добавлены следующие глобальные описания:
Const
{Характеристики файла}
FILEIDENT = 'My Spreadsheet'; {Идентификатор}
FILESEXTENSION = 'MSS'; {Стандартный тип файла}
Var
FeleName: String; {Имя файла таблицы}
{Видимая ширина колонок таблицы}
ColWidth: array [1..MAXCOLS] of Byte;
{Информация о заполнении таблицы}
LastCol, {Последняя заполненная
колонка таблицы}
LastRow: Word; {Последняя заполненная
строка таблицы}
Локальные описания:
Var
EndOfFile; Char; {Признак конца текстового файла}
Col; Word; {Номер колонки клетки}
Row; Word; {Номер столбца клетки}
Count; Word; {Число заполненных клеток таблицы}
Size; Word; {Длина информации клетки}
CPtr; TCellPtr; {Указатель на клетку}
F; File; {Файловая переменная}
Blocks; Word; {Прочитано или записано байт}
Файл хранения электронной таблицы является файлом постоянного хранения, бинарным произвольной длины; имеет имя, определенное пользователем, но с расширением имени "MSS".
Организация заголовочной части файла электронной таблицы представлена в табл. 4.1.
Таблица 4.1
Заголовочная часть файла электронной таблицы
Оперативная информация | Длина оперативной информации, байт | Комментарий |
FILEIDENT | Length (FILEIDENT) | Константа строки идентификации |
EndofFile | SizeOf (EndOfFile) | Признак конца текстового файла |
LastCol | SizeOf (LastCol) | Последняя заполненная колонка таблицы |
LastRow | Sizeof (LastRow) | Последняя заполненная строка таблицы |
Count | Sizeof (Count) | Число заполненных клеток таблицы на участке таблицы (1, 1, LastCol, LastRow) |
ColWidth | Sizeof (ColWidth[1] * MAXCOLS) | Вектор ширин колонок таблицы от 1 до MAXCOLS |
Запись в файл EndOfFile со значением 2610 = 1A16 (Ctrl + Z) обеспечивает вывод на экран только строки идентификации при просмотре файла с помощью большинства программ просмотра текстовых файлов.
При чтении файла электронной таблицы считанная информация первой текстовой строки файла проверяется на совпадение с FILEIDENT.
Информация о заполнении таблицы характеризует участок таблицы (1, 1, LastCol, LastRow), в пределах которого пользователь внес изменения информации таблицы.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии