Технологии программирования | страница 98
Согласно первому способу порядок информации в файле определяется последовательным рассмотрением цепочек байтов файла с использованием таблиц.
По второму способу, порядок размещения информации в файле определяется комментированными описаниями оперативной структуры данных на языках программирования, из которых осуществляется запись информации в файл и в которые предполагается считывание информации из файла.
Согласно третьему способу описание выполненное по второму способу, дополняется текстами процедур "чтения/записи" файла.
Практика показала, что использование документации файлов, составленной сторонними фирмами по второму и особенно по третьему способу не вызывало затруднений.
"Чтение/запись" файлов со сложной произвольной организацией, как правило, производится последовательными порциями. Первая порция считывается в статическую запись оперативной памяти. Эту запись называют заголовочной (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".