Вход/Регистрация
Технологии программирования
вернуться

Камаев В А

Шрифт:

MAXCOLS*MAXROWS*[SizeOf(Istring)+SizeOf(Extened)] = 100*100*[80+10] = 900K

Далее следуют описание переменной, являющейся указателем на текущую клетку таблицы, описание массива форматов клеток и переменных позиционирования информации на экране.

Cell: array [1..MAXCOLS, 1..MAXROWS] of CellPtr;

CurCell: CellPtr; {Указатель на текущую клетку}

Format: array [1..MAXCOLS, 1..MAXROWS] of Byte;

LeftCol, RightCol, TopRow, BottomRow,

{Позиционирование}

CurCol, CurRow, LastCol, LastRow: Word;

….

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

Сравните этот проект структуры данных с проектом структуры данных электронной таблицы, представленной в гл. 3.

Для составления оставшейся проектной документации выполним трассировку программы. После двойного нажатия клавиши <F7> начинает исполняться настроечный код, содержащийся в файлах *.TPU, и далее начинают выполняться операторы основной программы program Mcalc, находящейся в файле mcalc.pas.

В результате исследований была выявлена схема иерархии модулей программы, изображенная на рис. 7.3–7.5. Расшифровка обозначений схемы иерархии представлена в табл. 7.1.

Рис. 7.3. Фрагмент схемы иерархии основных модулей программы

Рис. 7.4. Схема иерархии модуля RedrawScreen

Рис. 7.5. Сокращенная схема иерархии модуля Run

Таблица 7.1

Расшифровка обозначений схемы иерархии

Имя модуля Файл Назначение модуля
Act Mclib Обрабатывает информацию введенной строки, занося ее в клетку
CenterColString Mcutil Рассчитывает X координату центрируемой в поле вывода строки
ChangeAutoCalc Mclib Устанавливает автоматический и ручной режимы рекалькуляции таблицы
ChangeFormDisplay Mclib Устанавливает режим видимости значений формул или текста формул
ClearInput Mcdisplay Очищает на экране поле строки ввода
ClrScr Crt Очищает информацию в окне экрана
DisplayCell Mclib Выводит на экран информацию клетки
DisplayScreen Mclib Отображает на экране внутреннюю информацию таблицы
EditCell Mcommand Осуществляет редактирование содержимого клетки
EditString Mcinput Редактор текстовой строки
EgaInstalled Mcdisplay Функция, определяющая наличие видеокарты EGA
FillChar Dos Присваивает элементам массива значение символа
GetCursor Mcdisplay Считывает толщину курсора в переменную
GetInput Mcinput Получив первый введенный символ, продолжает ввод информации клетки
GetKey Mcinput Формирует слово расширенного кода клавиши
GetSetCursor Mcdisplay Считывает толщину курсора в переменную и устанавливает новую толщину курсора
GotoXY Mcdisplay Перемещает курсор в соответствии с заданными координатами дисплея
InitColorTable Mcdisplay Инициализирует массив пересчета цветов для монохромного монитора
InitDisplay Mcdisplay Инициализирует видеокарту на работу в режиме 80-25
InitVars Mcutil Инициализирует значения основных переменных программы
Intr Dos Вызывает прерывание MS DOS
LoadSheet Mcommand Загружает информацию таблицы из файла
MainMenu Mcommand Реализует выбор тем меню программы
Mcalc Mcalc Главная программа
ParamCount Dos Счетчик полей командной строки запуска программы Mcalc
ParamStr Dos Возвращает значения заданного поля командной строки запуска программы Mcalc
PrintCol Mcdisplay Выводит значение координаты колонки таблицы
PrintFreeMem Mcdisplay Выводит на экран значение остатка свободной памяти
PrintRow Mcdisplay Выводит значение координаты строки таблицы
ReadKey Mcinput Считывает короткий код одной нажатой клавиши
Recalc Mclib Осуществляет перерасчет значений формул клеток таблицы
RedrawScreen Mclib Отображает на экране всю информацию таблицы
Run Mcalc Главный цикл программы
Scroll Mcdisplay Прокручивает информацию экрана в указанном направлении; устанавливает цвет фона освободившейся части экрана
SetBottomRow Mcdisplay Выводит на экран столбец с номерами строк таблицы
SetColor Mcdisplay Устанавливает цвет вывода строк на экран
SetCursor Mcdisplay Устанавливает заданную толщину курсора
SetRightCol Mcdisplay Выводит на экран строку с наименованиями столбцов таблицы
ShowCellType Mcdisplay Выводит на экран надпись о типе текущей клетки таблицы
TextMode Dos Переводит экран в указанный текстовый режим
Window Crt Определяет окно на экране дисплея
Write – Оператор вывода языка Pascal
WriteXY Mcdisplay Осуществляет вывод заданного числа символов заданной строки по заданным координатам дисплея

Рассмотрим функциональное описание основного ядра программы. В файле mcutil.pas исполняется рудиментарный, оставшийся от прежних разработок код:

HeapError:= @HeapFunc;

В файле mcdisplay.pas последовательно выполняются подпрограммы: InitDisplay, GetSetCursor, Window, EGAInsalled.

Процедура InitDisplay инициализирует видеокарту на работу в режиме 80 25 при помощи вызова прерывания 10h и вызовом процедуры InitColorTable инициализирует массив пересчета цветов для монохромного монитора. Последний массив используется при вызовах процедуры SetColor.

Процедура GetSetCursor при помощи процедуры GetCursor считывает толщину курсора в переменную OldCursor и при помощи процедуры SetCursor устанавливает новую толщину курсора (NOCURSOR).

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

Присваиванием CheckBreak:= False запрещается использование клавиши <Ctrl+Break> немедленного завершения программы.

Вывод начальной заставки осуществляется следующими вызовами подпрограмм. Процедурами SetColor и ClrScr производится очистка окна программы. Двойным вызовом процедур SetColor и WriteXY выводятся две строки начальной заставки. Несмотря на отсутствие курсора, отрабатывается рудиментарный вызов "сокрытия" курсора GotoXY(80,25). При помощи функции GetKey осуществляется ожидание нажатия пользователем любой клавиши.

Процедурами SetColor и ClrScr производится очистка окна программы.

Вызовом процедуры InitVars инициализируются значения основных переменных программы. Массивы инициализируются значениями по умолчанию вызова процедуры FillChar.

Присваиванием Changed:= False указывается факт неизменности информации клеток таблицы после момента инициализации переменных для запрещения срабатывания автосохранения.

Вызовом процедуры RedrawScreen производится отображение на экране всей информации таблицы.

Если значение ParamCount = 1, то в командной строке MS DOS вызова программы было указано имя файла таблицы. В этом случае выполняется процедура LoadSheet, которая загружает информацию таблицы из файла с именем файла, полученном при помощи вызова функции ParamStr.

Наконец, отрабатывает "лишний" вызов Clearlnput, который дублируется в начале последующей процедуры Run, содержащей главный цикл программы.

При завершении выполнения программы последовательно производится установка цвета экрана, вызовом TextMode переводится экран в текстовый режим, запомненный в переменной OldMode, и, наконец, вызовом SetCursor восстанавливается толщина курсора, запомненная в переменной OldCursor.

  • Читать дальше
  • 1
  • ...
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: