По области видимости различают:
- Локальные переменные. Определяются в пределах конкретной процедуры с помощью оператора Dim, и никак не связанны с одноименными переменными вне этой процедуры.
- Локальные переменные уровня модуля. Определяются в модуле до кода процедур с помощью оператора Dim. Они доступны во всех процедурах этого модуля кроме случая, когда в процедуре определена локальная переменная с тем же именем.
- Глобальные переменные уровня приложения. Определяются в модуле до кода процедур с помощью оператора Global. Они доступны во всех модулях программы. Глобальные переменные позволяют также обмениваться данными между работающими программами через механизмы DDE и OLE.
Использование переменных с разным уровнем видимости
Главный модуль Test2.mb теперь имеет вид:
Include "A.def" Include "B.def" Include "C.def" Declare Sub Main Define CLS Print Chr$(12) Sub Main CLS call A1 call A2 call B1 call B2 call C1 call C2 Print AA Print BB end sub |
Модуль A:
Include "A.def" 'локальная переменная уровня модуля dim sA1 as string Sub A1 sA1="модуль А: процедура А1" print sA1 end sub Sub A2 'локальная переменная уровня процедуры dim sA2 as string sA2="модуль А: процедура А2" print sA2 AA="глобальная переменная AA" end sub |
Модуль B:
|
|
Include "B.def" Sub B1 print "модуль B: процедура B1" end sub Sub B2 print "модуль B: процедура B2" BB="глобальная переменная BB" end sub |
Модуль C:
Include "C.def" Sub C1 print "модуль C: процедура C1" end sub Sub C2 print "модуль C: процедура C2" end sub |
Файл A.def
Declare Sub A1 Declare Sub A2 Global AA as string |
Файл B.def
Declare Sub B1 Declare Sub B2 Global BB as string |
Файл C.def
Declare Sub C1 Declare Sub C2 |
После компиляции модулей и сборки проекта получим исполняемый файл Test2.mbx.
Результат работы этой программы показан на рис.
Рис. 1. Результат выполнения программы