Читаем Технологии программирования полностью

Согласно первому способу порядок информации в файле определяется последовательным рассмотрением цепочек байтов файла с использованием таблиц.

По второму способу, порядок размещения информации в файле определяется комментированными описаниями оперативной структуры данных на языках программирования, из которых осуществляется запись информации в файл и в которые предполагается считывание информации из файла.

Согласно третьему способу описание выполненное по второму способу, дополняется текстами процедур "чтения/записи" файла.

Практика показала, что использование документации файлов, составленной сторонними фирмами по второму и особенно по третьему способу не вызывало затруднений.

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

Заголовочная часть файла электронной таблицы

Оперативная информацияДлина оперативной информации, байтКомментарий
FILEIDENTLength (FILEIDENT)Константа строки идентификации
EndofFileSizeOf (EndOfFile)Признак конца текстового файла
LastColSizeOf (LastCol)Последняя заполненная колонка таблицы
LastRowSizeof (LastRow)Последняя заполненная строка таблицы
CountSizeof (Count)Число заполненных клеток таблицы на участке таблицы (1, 1, LastCol, LastRow)
ColWidthSizeof (ColWidth[1] * MAXCOLS)Вектор ширин колонок таблицы от 1 до MAXCOLS

Запись в файл EndOfFile со значением 2610 = 1A16 (Ctrl + Z) обеспечивает вывод на экран только строки идентификации при просмотре файла с помощью большинства программ просмотра текстовых файлов.

При чтении файла электронной таблицы считанная информация первой текстовой строки файла проверяется на совпадение с FILEIDENT.

Информация о заполнении таблицы характеризует участок таблицы (1, 1, LastCol, LastRow), в пределах которого пользователь внес изменения информации таблицы.

Перейти на страницу:

Похожие книги