Сложные и объемные программы на MapBasic имеют многомодульную структуру. Это связано с ограничением среды MapBasic на размер модуля (64 Кбайт). Кроме того многомодульные программы легче поддерживать, а также это упрощает совместную разработку приложения.
Такая программа состоит из главного модуля, простых модулей и файла проекта. Физически модуль это текстовый файл с расширением MB а файл проекта имеет расширение MBP. Главный модуль программы отличается от простых модулей только наличием процедуры Main. Структура главного модуля практически совпадает со схемой, представленной на рис. 1. Компиляция модулей выполняется независимо друг от друга. В результате компиляции будут получены объектные модули (файлы с расширением MBO) которые впоследствии, в соответствии с файлом проекта, объединяются в исполняемый файл MBX (рис. 2).
Рассмотрим программу состоящую из четырех модулей.
Код многомодульной программы
Главный модуль Test2.mb
Include "mapbasic.def"
Declare Sub Main
Declare Sub A1
Declare Sub A2
Declare Sub B1
Declare Sub B2
|
|
Declare Sub C1
Declare Sub C2
Sub Main
print chr$(12)
call A1
call A2
call B1
call B2
call C1
call C2
end sub
Модуль A:
Include "mapbasic.def"
Declare Sub A1
Declare Sub A2
Sub A1
print "модуль А: процедура А1"
end sub
Sub A2
print "модуль А: процедура А2"
end sub
Модуль B:
Include "mapbasic.def"
Declare Sub B1
Declare Sub B2
Sub B1
print "модуль B: процедура B1"
end sub
Sub B2
print "модуль B: процедура B2"
end sub
Модуль C:
Include "mapbasic.def"
Declare Sub C1
Declare Sub C2
Sub C1
print "модуль C: процедура C1"
end sub
Sub C2
print "модуль C: процедура C2"
end sub
Рис. 2. Общая схема многомодульной программы
После компиляции этих модулей необходимо создать файл проекта Test2.mbp
.
Файл проекта
[Link]
Application=Test2.mbx
Module=Test2.mbo
Module=A.mbo
Module=B.mbo
Module=C.mbo
При этом подразумевается, что все файлы, на которые есть ссылки в проекте находятся в одной с ним папке.
Следующий шаг это сборка проекта и после сборки получаем исполняемый файл
Test2.mbx. Результат работы этой программы приведен на рис. 3.
Рис. 3. Результат выполнения программы
Возможна замена объявлений процедур в главном модуле на подключение соответствующих файлов DEF, которые и будут содержать все необходимые описания.
Include "mapbasic.def"
Include "A.def"
Include "B.def"
Include "C.def"
Declare Sub Main
Sub Main
print chr$(12)
call A1
call A2
call B1
call B2
call C1
call C2
end sub
В приведенном примере, все процедуры используются в главном модуле. Но можно использовать и другую структуру, например, использовать процедуры из модуля B в модуле A и т.д. для этого необходимо включить в модуль соответствующие объявления.
Порядок выполнения работы:
1. Изучить теорию.
2. Рассмореть работу программ на MapBasic из стандартного набора
|
|
3. Создать простую одномодульную программу и откомпилировать ее.
4. Создать простую многомодульную программу и откомпилировать ее.
5. Запустить полученные программы в окне MapInfo
6. В отчете отобразить теоретическую часть код программ и модулей
7. Выполненную работу показать преподавателю и сдать отчет на подпись.
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Тульский государственный университет»
Кафедра геоинженерии и кадастра
Утверждаю Декан горно-строительного факультета __________________ Р.А. Ковалев “____”_________________ 20___ г. |