КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Использование переменных с одним и тем же именем в различных уровнях области действия
Область действия или видимости (scope - скауп) переменных Термин "область видимости" относится к области процедуры или модуля VB, где данная переменная, процедура или другой идентификатор являются доступными. Области действия: процедурного уровня и модульного уровня. Переменная объявляется только один раз: - либо в разделе объявлений модуля (модульный уровень); - либо в начале процедуры (процедурный уровень). Область действия процедурного уровня: переменная, объявленная в процедуре, доступна только в этой процедуре. Поэтому говорят, что такая переменная имеет область действия процедурного уровня (procedure-level scope). В результате, при этом ограничении области действия программист может использовать одно и то же имя переменной в разных процедурах и двусмысленности не возникает. По умолчанию переменные локальны. При этом слово Private (локальная) работает локально точно также, как и Dim, например, в строках: Private strProfit Dim strProfit Область действия модульного уровня: используется, когда несколько процедур имеют доступ к одной и той же переменной. Обычно эффективней вычислить один раз какое-либо значение и сохранить его в переменной, а затем использовать эту переменную в ряде процедур, чтобы не вычислять одно и то же значение несколько раз. Для того чтобы переменная была доступна для всех процедур в определенном модуле, нужно поместить оператор Dim в начало модуля (в разделе объявлений), т. е. перед процедурами модуля. Например: Dim HelloMsg As String 'используется всеми процедурами в этом модуле Sub HelloWorld () HelloMsg = "Hello, World!" MsgBox HelloMsg,, "Окно приветствия" End Sub
Sub HelloDave () HelloMsg = "Hello, Dave!" MsgBox HelloMsg,, "Другое окно сообщения" End Sub
В листинге процедур нет объявлений переменной HelloMsg, т. к. она объявлена в разделе объявлений модуля. При написании оператора MsgBox в обоих случаях используется несколько аргументов: - первый – переменная HelloMsg; - второй – указание вида кнопки окна сообщений MsgBox. По умолчанию, если аргумент опускается, т. е., если между запятыми – пробел, то в окно встраивается просто кнопка ОК; - третий – заголовок окна сообщения. Он обязательно заключается в кавычки. В скобках после имени процедуры записываются необходимые аргументы, например, имя файла, к которому относится данная процедура. По умолчанию скобки всегда присутствуют.
Имя переменной уникально в области ее действия. Однако можно иметь переменные с одним и тем же именем на разных уровнях действия. Когда переменные имеют одно и то же имя, но разные области действия, VB использует переменную с наиболее локальной областью действия. Например, к предыдущему листингу добавляется:
Sub AnotherMessage () Dim HelloMsg 'локальное объявление HelloMsg = "Привет" MsgBox HelloMsg,, " Еще одно окно сообщения" End Sub
В первых двух процедурах переменная внутри процедуры не объявляется, поэтому используется переменная модульного уровня. В последней процедуре работает локальная переменная HelloMsg, объявленная в процедуре, а переменная модульного уровня с этим же именем в этой процедуре недоступна. Для того чтобы переменная имела видимость в пределахмодуля при ее объявлении используется, как правило, оператор Private, а не Dim. Хотя Dim также используется, когда требуется обеспечить совместимость программ с более ранними версиями VB. Объявление переменной с помощью слова Global, вместо операторов Private и Dim, делает ее доступной в пределах всего проекта. При этом переменная также должна быть объявлена в разделе объявлений модуля. Для открытия глобальной процедуры используется оператор Public, например: Public Sub Password() По умолчанию при открытии глобальной процедуры слова Public или Global, как правило, опускаются, и запись выглядит: Sub Password(). Для открытия локальной процедуры обязательно используется слово Private. Например: Private Sub Form_Load() Ключевое слово Static (статическая переменная) в объявлении переменной используется, когда необходимо, чтобы переменная оставалась в памяти даже тогда, когда процедура закончила работу, чтобы использовать ее полученное значение. Объявлять переменные словом Static можно только внутри процедуры. Если необходимо, чтобы все переменные в процедуре сохраняли свои значения, даже когда процедура не выполняется, следует поместить слово Static в объявлении самой процедуры перед ключевым словом, определяющим тип процедуры (т. е.,перед оператором Sub), например: Private Static Sub cmdStart_Click()
Дата добавления: 2014-01-07; Просмотров: 295; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |