Особливі значення тіпаVariant
Empty. Це значення має змінна тіпаVariantдо того як їй присвоюється ка-де-не-яке значення. Це спеціальне значення відмінне від нуля, рядки нульової довжини або значеніяNull.
Null. Найбільш часто використовується в додатках для баз даних значення для обо-значення відсутності даних. Присвоюється змінної тіпаVariant.
Error. Це значення може приймати змінна тіпаVariantдля вказівки помилкових-ної ситуації в процедурі.
Конструюються типи даних
Масив - Набір однорідних (з однаковим типом даних) елементів даних, звернення до яких відбувається по імені масиву і набору цілочисельних індексів.
Usertype- Проектований користувачем набір іменованих елементів даних, звернення до яких виробляють по імені змінної і імені елемента через точку.
Змінна - це пойменована область пам'яті, призначена для зберігання даних. Імена змінних використовують в операціях на алгоритмічній мові
Наприклад, в наступному операторі змінної а присвоюється сума змін-нихb ИC
У осередок з ім'ям aзапісивается число, яке залежить від того, які дані зберігаються в осередках з іменаміbіcв момент виконання даного оператора.
При іменуванні змінних, процедур, функцій, констант в мові VBследует со-блюдать правила:
Імена повинні починатися з літери і не можуть мати більше 255 символів.
Крім букв і цифр дозволяється використовувати тільки знак _.
Імена не можуть збігатися з ключовими (зарезервованими) словами VB.
DimІмя_переменной [AsТіп_данних]
Область визначення змінних.
У VBесть три види областей визначення, що характеризують доступність змін-ної:
локальна. змінна доступна тільки в поточній процедурі, визначається всередині процедури або функції (Dim);
змінні контейнера. змінна доступна тільки в поточній формі, модулі або класі, (Dim);
глобальна. змінна доступна у всьому проекті, визначається в розділі (Gen-eral) (Declaration) модуля, замість оператораDimіспользуется зарезервує-ванне словоPublic.
Час життя змінних. Локально оголошені змінні при виході з процедури видаляються з пам'яті, а при новому виклику процедури инициализируются заново. Їх вміст при цьому не зберігається, що не завжди бажано. Якщо змінну осягнути-вить як статичну, то її вміст при виході з процедури збережеться.
Private Sub Command1_Click ()
Static A As Integer
Dim B As Integer
Статична змінна А при кожному натисканні на кнопці Command1 збільшується на 1, нестатичних змінна В при кожному натисканні инициализируется заново, тому її значення при виході завжди дорівнює 1.
Щоб оголосити статичними всі локальні змінні процедури необхідно запи-описати слово
Static Sub | Function | Property ([Аргументи])
в заголовку відповідної процедури.
Основна відмінність констант від змінних полягає в тому, що їх значення не можна изме-нять в процесі виконання програми. Вони завжди зберігають значення, присвоєні при розробці. Області визначення для констант такі ж, як і для змінних.
Синтаксис [Public Private] Const Імя_константи = Значення
Const Pi = 3.1415926535897932
Константи можна оголошувати і з зазначенням типу даних:
Const Pi As Double = 3.1415926535897932
У Visual Basic змінні оголошуються за допомогою оператора Dim. після якого слід As і Імя_Тіпа змінної. наприклад:
Dim a As Long Dim b As Byte Dim c As Long Dim numOfLetters As Long Dim myString As String Dim isLoaded As Boolean
Якщо не вказувати As Імя_Тіпа, то змінна буде оголошена як Variant.
Dim a As Long, Dim b As Integer
Тут дуже важливо помітити таку особливість. Логічно було б оголосити 3 змінні типу Long наступним чином:
Dim a, b, c As Long
Dim a As Long Dim b As Long
Dim myString1 As String Dim myString2 As String
Такі логічні пробіли між рядками необхідні для позбавлення коду від його монотонності.
Присвоїти значення змінної можна за допомогою знака одно "=". наприклад:
a = 1234567 b = 234 c = 133 myString = "Visual Basic рулить" isLoaded = True
В даному прикладі змінним присвоювалися константи. Але часто буває необхідно присвоїти одній змінної значення іншої. Це робиться в такий спосіб:
a = b 'можна, тому що змінна b "вміщується" 'в тип Long (234<4294967296)
a = b + c 'тепер в a зберігається сума b + c. b = c 'теж можливо (133 <255) b = a ' нельзя, т.к. переменная a не укладывается ' в диапазон [0-255]. Произойдёт ошибка. myString = a ' Visual Basic сам преобразует число 1234567 ' в строку "1234567", а потом присвоит это значение ' переменной myString. Также возможно обратное действие. isLoaded = True ' всё ОК myString = myString & " однозначно!" ' здесь происходит слияние двух строк, в результате чего ' переменная myString содержит строку: ' "Visual Basic рулит однозначно!".
isLoaded = a 'можливо, тому що Visual Basic сам перетворить тип Long 'в тип Boolean. isLoaded буде містити True. 'Чому не False? 'Тому, що в VB False - це нуль, а будь-який, "не нульове значення - True
Dim myLongParam Dim myString $
Тут оголошені 2 змінні, перша має тип Long, друга - String. Також можна употребрять ці спец. символи для явної вказівки типу констант, наприклад:
Call MyProc (myParam1, myParam2, 5)
Тут, при виклику процедури MyProc, останній параметр має тип Long. Якби ми не вказали значок , То він (параметр) мав би тип Byte. Це необхідно при використанні API функцій.
Вище я вже відзначав, що Visual Basic часто, непомітно для розробника, займається перетворенням типів змінних на льоту. Наприклад, ми розглядали такий приклад:
Мінлива a має тип Long, а myString - String. Visual Basic сам перетворить змінну a в тип String, а потім привласнить значення змінної MyString. Це необхідно знати. Також, Visual Basic надає у ваше розпорядження кілька функцій перетворення типів: CLng, CBool, CDate, CStr і т.д. Кожна функція перетворює вираз до відповідного типу. Розглянемо поширену помилку програміста на VB. Нехай у нас є код типу:
Dim a As Byte Dim b As Byte Dim c As Long a = 200 b = 200 c = a + b
Здавалося б, що якщо запустити такий код на виконання, то в змінній c буде знаходитися значення 400 (200 + 200). Але не тут-то було :(. Visual Basic на рядку c = a + b згенерує помилку Overflow (Переповнення). Справа в тому, що в вираженні праворуч від знака одно складаються 2 змінні типу Byte, і Visual Basic вирішує, що після обчислення цього виразу, повинен залишитися той же тип - Byte. Але якщо згадати те, що тип Byte може зберігати значення в діапазоні 0-255, можна зрозуміти чому VB генерує Overflow (Переповнення). 400 далеко виходить за діапазон Byte. Тут може виникнути питання: "А як же бути? Оголошувати змінні a і b типом Long?". можна зробити й так. А можна скористатися функцій тощо еобразованія типу CLng. Тоді працездатний код буде виглядати наступним чином:
Dim a As Byte Dim b As Byte Dim c As Long a = 200 b = 200 c = CLng (a) + CLng (b) 'Все в порядку, 400 - входить в тип Long
ще трохи про константи:
У Visual Basic можна оголошувати не тільки змінні, але і константи. Константа як і змінна, теж зберігає деяке значення, але на відміну від змінної збережене значення не може змінюватися. Щоб оголосити константу необхідно використовувати зарезервоване слово Const, за яким слідує ім'я і значення (і можливо тип) константи:
Const PI = 3.1415
Можна відзначити таку особливість VB: для констант з плаваючою точкою тип за замовчуванням - Double, для цілих чисел - Integer. (Це легко можна перевірити вбудованої функцій VB - VarType). Для того, щоб явно задати тип константи, необхідно після імені поставити тип, наприклад
Const PI As Long = 3 'PI = 3, PI має тип Long
У Visual Basic існує дуже багато вбудованих констант, які з легкістю можуть бути використані в ваших програмах. Наприклад, константа vbNewLine - містить 2 символи, з ASCII кодами 13 та 10, тобто перехід на новий рядок. Список констант можна подивитися в Object Browser'е. Для його виклику необхідно натиснути F2, перебуваючи в середовищі Visual Basic.
І про "Видимості" змінних:
Повідомляти змінні можна в самих різних місцях:
Усередині процедури (або функції). У цьому випадку змінна буде "видно" тільки в коді цієї процедури (або функції). Якщо ви спробуєте звернутися до такої змінної всередині коду іншої процедури, то Visual Basic згенерує помилку.
У розділі General Declarations модуля. Тут діють ті ж правила, що і в розділі General Declarations форми. Private (або Dim) будуть "видно" тільки в коді модуля. А Public - всюди. Відмінність спостерігається лише в способі доступу до змінної. Тут не обов'язково вказувати ім'я модуля перед такою змінної. Можна просто вказати її ім'я і все. Хоча я не рекомендую цього робити, тому що втрачається наочність. І, до того ж, якщо у вас 2 модуля, в яких оголошено змінні з однаковими іменами, то дістатися до них можна тільки вказавши ім'я відповідного модуля перед ім'ям змінної.
Врев «життя» змінних:
Період існування змінної означає, як довго змінна є доступною.
Змінні, оголошені в процедурі (або функції) будуть "живі" тільки поки виконується ця процедура (або функція). При виході з процедури - змінна видаляється. При черговому виклику цієї процедури - змінна заново инициализируется. До речі, до слів Private, Public і Dim, у процедурах і функціях можна використовувати зарезервоване слово Static. Така змінна при повторному виклику цієї процедури не буде заново инициализироваться. Вона буде зберігати те значення, яке було в ній після попереднього виклику. (Такі змінні дуже зручно використовувати в обробці події Timer'а). наприклад:
Static myStat As String 'Private Static змінна
Змінні рівня форми будуть "живі" тільки поки "жива" форма. Як тільки об'єктна змінна форми буде встановлена в Nothing (або після виконання оператора Unload), всі змінні рівня цієї форми видаляються.
Змінні рівня модуля "живі", поки "живе" вашу програму. Тобто "Живі" завжди.
Перед використанням змінної, її обов'язково потрібно оголосити. Це позбавить вас від зайвих помилок.
Змінним потрібно давати осмислені імена. Тобто намагайтеся не використовувати імена типу a1, a2, a3, ab, ccc і т.п. Повірте, рано чи пізно ви заплутаєтеся у своїй же програмі! Найкраще змінним давати англійський еквівалент того, що зберігає дана змінна. Наприклад, для зберігання деякої суми грошей, змінна може бути названа як cashMoney. Якщо у вас англійською не дуже, то можете використовувати трансліт, тобто змінну назвати, наприклад як summaDeneg. Ну і т.п. Кирилицю в імені змінної використовувати не можна.
Вирази, оператори, вбудовані функції
Вираз - це деякі дані або група даних, об'єднаних знаками операцій. Вираз будується із застосуванням констант, змінних або літеральних значень, арифметичних і логічних операцій і функцій. Кожен вираз обчислюва-ляется до окремого значення (числа, рядки і т.п.).
Оператором можна назвати закодовану форму інструкції алгоритму, Вира-лишнього певні дії. Оператори (statements) в будь-якій мові программи-вання є основними виконуваними елементами алгоритму програми.
Код логіки алгоритму складається з процедур та процедур-функцій. Процедури і функції-процедури складаються з операторів, а оператори складаються з ключових слів (найменувань операторів) і виразів.
Оператор присвоювання. Має дві синтаксичні форми:
Let varname = expression (ранні застарілі версії VB)
Мінлива varnameпредставляет любуюVB-змінну, аexpression- любоеVB-вираз. Знак операції присвоювання (=).
Операції і вирази
Операції використовуються для об'єднання, порівняння або інших дій над значеннями в виразах або змінними. Операції мають імена і позначають їх символи - знаки операцій. Значення, які об'єднуються знаками операцій в єдине вираження, називаютоперандамі. Найбільш часто використовуваними є арифмет-етичні та логічні операції.
Арифметичні операції вVB
Більше або дорівнює. Результат: Trueеслі А більше або дорівнює В, іначеFalse
Вбудовані функції Visual Basic
Visual Basic включає більше 140 вбудованих функцій і їх число постійно зростає. У 6-ій версії було додано 14 нових функцій. Використання бібліотеки готових функцій, вбудованих вIDE, забезпечує можливості вирішення наVBсложних завдань програмування користувачами, які не спеціалізуються в обчислювальній математиці, але активно використовують обчислювальні методи у своїй предметній області.
Функції масивів
Функції рядків
Функції перетворення типу даних
Функції завантаження даних
Функції роботи з файлами
Функції системних параметрів
Функції кольору
Функції роботи з датами
Функції перетворення чисел в різні системи числення
Функції роботи з об'єктами
Функції роботи з покажчиками
Visual Basic може містити недокументовані функції. Щоб побачити ці функції, відкрийте Object Browser (F2), клацніть правою кнопкою в правому вікні і виберітеShow Hidden Members.
У цьому списку ви знайдете всі функції, методи, властивості, підтримувані Visual Basic.
Розробники не рекомендують користуватися недокументованими функціями через можливу відсутність їх підтримки в VB.NET, що призведе до збою в ваших про-грамах при запуску ваших проектів в новому середовищі.
Прімечаніе1: Якщо ім'я вашої функції збігається з ім'ям вбудованої функції Visual Basic, то ваша функція замінює її. В цьому випадку, для звернення до вбудованої функції необхідно явно вказати ім'я класу, напрімерVBA .IsNumeric.
Прімечаніе2: Іменовані аргументи. Функції можуть мати іменовані аргументи. Іменований аргумент це аргумент, який має ім'я, визначене в бібліо-теке об'єктів. Замість того щоб ставити значення аргументів в порядку, визначеному синтаксисом, використання іменованих аргументів дозволяє присвоювати їм значення в довільному порядку. Припустимо, наприклад, що метод використовує три аргументи: DoSomeThing імяАрг1, імяАрг2, імяАрг3 Припустимим є присвоювання значень цих аргументів в наступній інструкції: DoSomeThing імяАрг3: = 4, імяАрг2: = 5, імяАрг1: = 20 і не обов'язково розташовувати іменовані аргументи в определен- ном порядку