Технологии программирования | страница 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".