Итак, переменная представляет собой временное хранилище для данных в вашей программе. Кто учился информатике в школе, наверное, помнит, что "переменные - это такие ящички в которых содержится информация...". В тексте программы Вы можете использовать сколько угодно перменных. Особая польза от них - это то, что Вы присваеваете нужным данным короткий и легкозапоминающийся идентификатор. Ярлычок, так сказать. Согласитесь, если Вы присвоете переменной UserName значение "Иванов Пётр Автагенович", то в дальнейшем использовать восемь символов легче, чем двадцать три!!! Переменные могут содержать практически любую информацию.
Чтобы грамотно использовать переменную, нужно её сначала объявить, зарезервировать под неё память. Для этого используются следующие ключевые слова: Dim, Private, Public, Static, Global. Надеюсь ничего не забыл.
Переменные можно объявлять на уровне модуля и на уровне процедуры. Под уровнем модуля подразумевается часть формы General и стандартный модуль, а под уровнем процедуры подразумевается Sub, Function и т.д.
Пояснение использования Static. Описывает переменные только на уровне процедуры. Переменная, описанная на уровне процедуры, "живёт" только в пределах этой процедуры на протяжении работы приложения.
Пояснение использования Dim. Описывает переменные как на уровне модуля так и на уровне процедуры. Переменная, описанная на уровне процедуры, живёт только в пределах этой процедуры и прекращает работу по оканчанию процедуры. Её мы чаще всего и применяем как счётчик, т.к. он и нужен то нам всего в данной процедуре. Переменная, описанная на уровне модуля, доступна для всех процедур данного модуля. Т.е. если Вам нужна переменная, котороую видят все функции и процедуры, тo и объявите её со словом Dim на уровне модуля.
Пояснение использования Public. Описывает переменные на уровне модуля. Таким образом переменная стаёт глобальной, но на уровне формы и доступна всем остальным модулям. Вот вопрос из конференции:
Описываю переменную Public в разделе формы General, присваиваю ей значение, при переходе в другую форму значение становится Null, что же это за глобальность? работаю в VB 5.0. Посоветуйте.
Конечно, при переходе в другую форму переменная будет пустой, неизвестной для второй формы! Чтобы избежать этого нужно объявить переменную в стандартном модуле со словом Public или Global. Тогда переменная будет доступна и известна КАЖДОЙ форме.
Пояснение использования Private. Описывает переменные как на уровне модуля так и на уровне процедуры. Переменная, описанная на уровне процедуры, живёт только в пределах этой процедуры. Переменная, описанная на уровне модуля, доступна лишь модулю, в котором она объявлена.
Объявление всех переменных считается хорошей привычкой. В помощь забывчивым и незабывчивым есть инструкция Option Explicit. Привыкайте использовать её всегда! Помещать эту инструкцию нужно на уровне модуля и потом она проверяет каждую переменную объявлена ли она или нет? Если нет - выскакивает ошибка.
Допустимые значения имён переменных:
Abc; Interstate76; MyDate; Eto_prawilnoe_imya_peremennoj; Imya_peremennoj
Недопустимые значения имён переменных:
Name - слово, зарезервированное VB
8kilo - в начале стоит число
How To - состоит из двух слов.
A_eto_ne_prawilnoe_imya_peremennoj_tak_kak_ono_soderjit_bolee_soroka_simwolow
- имя переменной содежит более сорока символов.
Ram&Rom - содержит в середине символ &
Значения переменным присваюваются следующим образом:
Counter = 13
или
MyName = "C.M."
или
DateOfBird = #06-06-99#
или
X = Y + Z
или
X = X - 1
Вот здесь некоторые математики войдут в заблуждение: "Как переменная икс может равнятся своему значению, уменьшеному на единицу???". Объясняю: в этом случае переменной икс присваевается значение её самой, уменьшеной на единицу. Т.е. оператор "=" в этом случае не "равно", а оператор присвоения!
Теперь о типах переменных. При объявлении лучше всего объявить переменную, тем самым указать сколько памяти нам потребуется:
Dim uName As String
В этом случае мы объявляем строковую переменную. Необяъвленная переменная автоматически стаёт типом Variant.
Размер отводимой памяти под переменную зависит от вида этой переменной. Основные виды переменных:
Тип данных | Размер | Диапазон значений | Пример использования |
Interger (Целое) | 2 байта | от -32 768 до 32 767 | Dim Bird% Bird% = 37 |
Long Integer (Длинное целое) | 4 байта | от -2 147 483 648 до 2 147 483 647 | Dim Loan& Loan& = 350,000 |
Single - precision Floating point (Одинарной точности с плавающей десятичной точкой) | 4 байтa | от -3.402823E38 до 3.402823E38 | Dim Price! Price! = 899.99 |
Double - precision Floating point (Двойной точности с плавающей десятичной точкой) | 8 байт | от -1.79769313486232D308 до 1.79769313486232D308 | Dim Pi# Pi# = 3.1415926535 |
Currency (Денежные единицы) | 8 байт | от -922337203685477.5808 до 922337203685477.5807 | Dim Debt@ Debt@ = 7600300.50 |
String (Строка) | 1 байт на символ | от 0 до 65 535 символов | Dim Dog$ Dog$ = "pointer" |
Boolean (Логический) | 2 байт | True (Истина) или False (Ложь) | Dim Flag As Boolean Flag = True |
Date (Дата) | 8 байт | от January (Январь)1, 100, до December (Декабрь) 31, 9999 | Dim Birthday As Date Birthday =#3-1-63# |
Variant (Вариант) | 16 байт (для чисел); 22 байт на символ (для строк) | для всез типов данных | Dim Total Total = 289.13 |
Также пользователь может создавать свои собственные типы данных! Нужно это, например, если у Вас есть группа элементов, связанных по смыслу. Создаётся он с помощью ключевого слова Type. Для начала пример. Вы пишите программу для какого-нибудь магазина, где артикль, дата поступления и, например, срок годности поступаемого товара должны вводиться в компьютер и, соответсвенно, присваиваться переменным. Для этого нам нужны как минимум три переменные. Назовём их
Artikl - артикль
DatPos - дата поступления
SrokGod - строк годности.
Для этого можно просто создать тип переменной, содержащий все три значения! Делается это так (в модуле):
'образовываем тип переменной Towar и устанавливаем эти компоненты:
Type Towar
Artikl As String'aртикль (название) товара
DatPos As Date 'дата поступления
SrokGod As Integer 'срок годности пусть будет в месяцах ;-)
End Type
'теперь, например, например для всех сортов колбасы
'объявляем переменную:
Dim Kolbasa As Towar
'и присваеваем значения (для этого после слова Kolbasa ставим точку!):
Kolbasa.Artikl = "Докторская"
Kolbasa.DatPos = #04-08-99#
Kolbasa.SrokGod = 12