Используется на уровне модуля для объявления нижней границы по умолчанию для подскрипников массива.
Синтаксис
Примечания
Поскольку база по умолчанию равна 0, оператор Option Base никогда не требуется. Если используется, оператор должен находиться в модуле до всех процедур. Оператор Option Base может указываться в модуле только один раз и должен предшествовать объявлениям массивов, включающим размерности.
Пункт To в тусклом, частном, публичном, reDim и static заявлениях обеспечивает более гибкий способ управления диапазоном подзаписей массива. Однако, если вы явно не установите нижнюю границу с пунктом To, вы можете использовать базу опций для изменения нижней границы по умолчанию на 1. База массива, созданного с ключевым словом ParamArray, ноль; База опций не влияет на ParamArray (или функцию Array, если она имеет имя библиотеки типов, например VBA. Array).
Оператор Option Base влияет только на нижнюю границу массивов в модуле, где находится данный оператор.
Пример
В этом примере оператор Option Base используется для переопределения значения базового индекса массива, равного 0. Функция LBound возвращает наименьший доступный подскрипник для указанных размеров массива. Оператор Option Base используется только на уровне модуля.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Оператор DIM резервирует место в памяти для размещения элементов массива.
Например:
DIM A$ (5), В% (1 to 5), С (5 to 10, 1 to 10 )
1. Определяется имя массива
2. Определяется тип элементов массива
3. Резервируются ячейки памяти для массива
4. Заполняются нулевыми значениями ячейки для массива числового типа или пустыми строками текстовый массив.
Оператор DIMможет находится в любом месте программы до первого обращения к массиву, который он объявляет. Обычно оператор DIMпомещают в начало программы, что облегчает процесс отладки.
В QBASIC можно изменить порядковый номер первого элемента массива. Первый элемент массива в QBASIC по умолчанию имеет номер ноль, а не 1.
Массив целых чисел, определенный в этом примере, состоит из 100
QBASIC позволяет явно задавать область изменения индексов массива.
DIMMON% (1 to 12), DAI (1 to 31).
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Используется на уровне модуля для принудительного явного декларирования всех переменных в этом модуле.
Синтаксис
Option Explicit
Примечания
Оператор Option Explicit (если используется) должен быть указан в модуле перед процедурами.
Когда в модуле появится параметр Explicit, необходимо явно объявить все переменные с помощью димных, частных, общедоступных, reDim или статических заявлений. При попытке использования необъявленной переменной возникает ошибка во время компиляции.
Если оператор Option Explicit не используется, все необъявленные переменные будут иметь тип Variant или тип по умолчанию, заданный оператором Deftype.
Используйте оператор Option Explicit, чтобы исключить неправильный ввод имен существующих переменных и избежать путаницы в коде, когда область действия переменных неясна.
Пример
В этом примере используется оператор Option Explicit для указания необходимости явного объявления всех переменных. Попытка использования необъявленной переменной вызывает ошибку во время компиляции. Оператор Option Explicit используется только на уровне модуля.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
В данном примере переменная а2$ принимает значение « 12 » потому, что ее длина до операции присвоения была равна двум (два символа: « 78 »), поэтому оператор « LSET » присваивает значение этой переменной в виде двух символов из переменной а1$ : « 12 ».
Как видно из примера, убираются только пробелы, находящиеся слева от текста.
Пример. a 1$ = «Моя первая программа «
((Моя вторая программа))
В данном примере во второй строчке происходит печать переменной, начиная с 5й позиции, всего 16 символов. В третьей строке происходит замена текста: « Моя первая программа » на текст « Моя вторая программа », при котором меняется середина текста, начиная с 5й позиции.
В первом примере создается директория с именем « rab 2 » в текущей директории, а во втором создается новая директория, путь которой явно указан. Причем этот путь заносится в переменную, которая является аргументом оператора « MKDIR ».
Пример. PRINT 5 MOD 2, 2 MOD 5, 2.2 MOD 5, 5 MOD 2.2 ((1 2 2 1))
Пример. MKDIR «rab»: NAME «rab» AS «rab1»
В примере сначала в текущей директории образуется поддиректория под именем « Rab », а затем она меняет свое имя на « rab 1 ».
В данном примере сначала выполняется подпрограмма « sub 1 », так как переменная i 1% принимает значение 1, затем подпрограмма « sub 2 », так как переменная i 1% в цикле принимает значение 2.
Пример. ON i1% GOTO m1, m2
Если значение переменной i 1% равно 1, то произойдет переход на метку « m 1», если равно 2, то на метку « m 2 ».
Примеры. 1. OPEN “Rab1.dan” FOR OUTPUT AS #1 2. OPEN “Rab2.dan” FOR INPUT AS #1 3. OPEN “Rab3.dan” FOR APPEND AS #1 4. OPEN “Rab4.dan” FOR BINARY AS #1 5. OPEN “Rab5.dan” FOR RANDOM AS #1 LEN=80
Во втором примере открывается последовательный файл под именем « Rab 2. dan » для ввода данных из файла (ключевой слово « INPUT ») с его начала.
Примеры. 1. OPTION BASE 0 2. OPTION BASE 1
В примерах устанавливается нижний предел размерности массива как 0 или 1. Если массив будет определен как « DIM a (10) », то в первом примере количество элементов массива равно одиннадцати, от 0 до 10, а во втором десяти, от 1 до 10. Если массив определен как « DIM a (2 TO 10) », то вне зависимости от определения в операторе « OPTION BASE », размерность массива будет от 2 до 10 и содержать 9 элементов.
Пример. SCREEN 9: CLS: CIRCLE (30, 30), 20, 1: CIRCLE (100, 30), 20, 1
В данном примере на экран сначала выводятся 8 прямоугольников и образ текущего экрана под номером 0 запоминается на странице под номером 1. Далее выводятся еще 7 прямоугольников (цикл по переменной i 1% от 9 до 15). После ввода символьной переменной ( i 1$ ) образ экрана копируется из страницы под номером 1 на 0 и на экране появляются снова восемь прямоугольников, а не 15, которые были до ввода текста.
Примеры. 1. PLAY «MS L8 ff ee dd de ff ee d4 d4 cc cc 2. a$= «MS L8 ff ee dd de ff ee d4 d4 cc cc
WINDOW SCREEN (0, 0)-(100, 100)
PRINT POINT(0), POINT(1), POINT(2), POINT(3)
Пример. PRINT: PRINT POS(0) ((1))
В данном примере курсор находится на первом столбце, так как предыдущий оператор « PRINT » установил на эту позицию курсор.
В примере информация выводится на экран дисплея, при этом выводятся цифры одна за другой до тех пор, пока не будет достигнут конец строки. После этого вывод производится на следующей строчке. Первый оператор PRINT не имеет ни одного аргумента, поэтому он только переводит курсор на следующую строчку. Второй оператор имеет аргументы, которые перечислены между собой через точку и точку с запятой. Если стоит точка с запятой, то следующий текст будет следовать непосредственно за предыдущим значением. Если стоит запятая, то следующее значение будет выводиться с определенной позиции. Экран делится на пять одинаковых по ширине областей (по горизонтали) и следующее значение будет выводиться на первой позиции следующей зоны (знак табуляции). Запятая, которая находится после последнего аргумента свидетельствует о том, что следующий оператор PRINT будет выводить очередное значение на той же строчке, что и последний выведенный текст (после символа «0»).
PRINT i1%, i2#, i3#, a$: PRINT USING «###.#####»; i1%
PRINT USING «###.####»; i3# : PRINT USING «+###.##^^^^»; i2#
PRINT USING «$$##.####»; i2#: PRINT USING «**#.####»; i2#
PRINT USING «!»; a$: PRINT USING «\ \»; a$
Следующие два числа выводятся с лидирующими символами: «$» и «*». То есть, если число занимает меньше позиций целой части числа, чем ему выделено, например, содержит одну значащую цифру, а выделено 3 или 4, то перед числом будут выведены символы, указанные в формате (знак доллара и звездочка).
Далее выводится сначала первый символ, а затем три элемента символьной переменной. При указании формата как «\ \», на экран будет выведено столько символов, сколько их имеется в формате. Так, в примере их имеется: один символ «/», один пробел и один символ «/», то есть, всего три символа. Столько же символов и будет выведено на экран из символьной переменной.
Примеры. 1. PRINT i 1% REM вывод на экран значений переменной i 1%
2. PRINT i 1% ‘ вывод на экран значений переменной i 1%
Данные примеры идентичны друг другу.
FOR i1% = 1 TO 2: READ i2%, i3%, i4%: PRINT i2%, i3%, i4%,
NEXT i 1% ((1 1 1 1 1 1))
PRINT RIGHT$(a$, 9) (( программа ))
В данном примере на экран выводятся 9 символов, находящихся справа в символьной переменной.
Пример. MKDIR «TEMP»: FILES
RMDIR » TEMP «: FILES
В примере сначала создается директория « TEMP » при помощи оператора « MKDIR » и выводится на экран содержимое текущей директории. Далее эта директория уничтожается при помощи оператора « RMDIR » и содержимое текущей директории выводится на экран.
Пример. RANDOMIZE TIMER
Данный пример выводит случайным образом координаты х и у в диапазоне от 1 до 100. Первый оператор позволяет изменить начальное число последовательности случайных чисел. Если бы этого оператора не было, то каждый раз при запуске программы, она выдавала бы одну и ту же последовательность чисел. По оператору выдается число от 0 до 1, не включая значение 1. Поэтому, умножая данное значение на 100, получим число от 0 до 99. При помощи оператора INT убирается дробная часть числа, к которому прибавляется значение 1. В результате получаем число в диапазоне от 1 до 100, которое и выводится на экран дисплея.
Пример. a1$ = » 123456 «: a2$ = «7 8»
Как видно из примера, убираются только пробелы, находящиеся справа от текста.
Данный пример позволяет создать новую директорию под именем « mkdir rab ».
Примеры. 1. SLEEP 2 2. SLEEP
В первом примере производится задержка выполнения программы на две секунды. Во втором примере задержка производится до тех пор, пока не будет нажата какая-нибудь клавиша.
В примере производится звук частотой 65 герц в течении 6 тактов. Частота может быть указана в пределах от 37 до 32767 герц. Продолжительность звука указывается в тактах, где 18.2 такта равняются одной секунде.
В примере переменной « i 1% » присвоено значение 15, которое хранится в числовой форме. Далее в переменную « а1$ » заносится значение текста «—», потом текста в виде числа и снова текст «—», которое затем выводится на экран.
СПРАВКА: Функция ENVIRON$, Оператор ENVIRON ENVIRON$ возвращает строку среды DOS. ENVIRON изменяет или добавляет строку среды в таблицу среды DOS.
Handler: PRINT PRINT «Ошибка «; ERR; » в строке «; ERL SELECT CASE ERR CASE 71 PRINT «Используемое устройство «; ERDEV$; PRINT » Код ошибки устройства = «; ERDEV RESUME NEXT CASE 11 INPUT «Введите новое значение для делителя: «; y% RESUME ‘ Повторяет выполнение строки 30 с новым значением для y%
Handler: PRINT PRINT «Ошибка «; ERR; » в строке «; ERL SELECT CASE ERR CASE 71 PRINT «Используемое устройство «; ERDEV$; PRINT » Код ошибки устройства = «; ERDEV RESUME NEXT CASE 11 INPUT «Введите новое значение для делителя: «; y% RESUME ‘ Повторяет выполнение строки 30 с новым значением для y%
Handler: PRINT PRINT «Ошибка «; ERR; » в строке «; ERL SELECT CASE ERR CASE 71 PRINT «Используемое устройство «; ERDEV$; PRINT » Код ошибки устройства = «; ERDEV RESUME NEXT CASE 11 INPUT «Введите новое значение для делителя: «; y% RESUME ‘ Повторяет выполнение строки 30 с новым значением для y%
Пример: ‘В этом примере необходимо, чтобы клавиши Caps Lock и Num Lock были выключены. CONST ESC = 27 KEY 15, CHR$(&H4) + CHR$(&H1F) ‘Устанавливает Ctrl+S как KEY 15 ON KEY(15) GOSUB PauseHandler KEY(15) ON WHILE INKEY$ <> CHR$(ESC) PRINT «Нажмите Esc для останова, Ctrl+S для паузы» PRINT WEND END
Handler: PRINT PRINT «Ошибка «; ERR; » в строке «; ERL SELECT CASE ERR CASE 71 PRINT «Используемое устройство «; ERDEV$; PRINT » Код ошибки устройства = «; ERDEV RESUME NEXT CASE 11 INPUT «Введите новое значение для делителя: «; y% RESUME ‘ Повторяет выполнение строки 30 с новым значением для y%
One: PRINT «Один» RETURN Two: PRINT «Два» RETURN
OPEN оператор
СПРАВКА: Оператор OPEN Открывает файл или устройство.
POKE оператор
СПРАВКА: Функция PEEK, Оператор POKE PEEK возвращает значение байта, хранящегося в указанном месте памяти. POKE записывает значение байта в указанное место памяти.
RND функция
СПРАВКА: Оператор RANDOMIZE, Функция RND RANDOMIZE инициализирует генератор случайных чисел. RND возвращает случайное число одинарной точности между 0 и 1.
Handler: PRINT PRINT «Ошибка «; ERR; » в строке «; ERL SELECT CASE ERR CASE 71 PRINT «Используемое устройство «; ERDEV$; PRINT » Код ошибки устройства = «; ERDEV RESUME NEXT CASE 11 INPUT «Введите новое значение для делителя: «; y% RESUME ‘ Повторяет выполнение строки 30 с новым значением для y%