Arrays — AutoIt Wiki

Переменные AutoIt 

Переменные считаются местом хранения данных в памяти, к которым можно получить быстрый доступ. Удобно полагать переменные подобными почтовому ящику в памяти, в который можно вложить информацию или получить ее. Например, можно создать переменную для хранения числа ответов на вопросы пользователя или корня уравнения.

Каждая переменная имеет название (почтовый ящик имеет адрес), которое должно начинаться с символа $ и может содержать буквы, цифры и символы подчеркивания _. Ниже представлены примеры допустимых названий для переменной:

    $var1

    $my_variable

 

Каждая переменная хранится как вариант.

 

Объявление переменных

Переменные объявляются и создаются с помощью ключевых слов Dim, Local и Global:

    Dim $var1

Можно объявлять сразу несколько переменных:

    Dim $var1, $myvariable

 

Всегда можно опустить явное объявление переменной.

    $var1 = «создать и присвоить»

 

Область видимости (Scope)

Область видимости связана с тем местом, в котором объявляется переменная. Если это выполняется в начале сценария и вне функции, то полагается, что эта переменная имеет Глобальную область видимости, и поэтому «видна», то есть может использоваться из любого места сценария.

Переменная, объявленная внутри тела функции, имеет Локальную область видимости, и поэтому будет «видна» только внутри той же функции. Такие переменные удаляются после окончания обработки функции.

По умолчанию переменные, декларированные с помощью Dim, а также те, которым присваиваются значения в теле функции, полагаются Локальными в том случае, если они не объявлены в качестве глобальных. В остальных случаях переменная полагается глобальной. Область видимости переменных можно всегда указать явно директивами Local и Global.

Массивы

Массив (Array) — это переменная, содержащая последовательность элементов данных. Каждый элемент массива может быть доступен указанием его порядкового номера — индекса (index).

Antananarivo

Пример:

Допустим, что требуется сохранить следующую последовательность символов: A, U, T, O, I, T and 3.
Для можно было бы задействовать семь отдельных переменных, но применение массива оказывается более эффективным способом хранения:

$Array[1] = «A»
$Array[2] = «U»
..etc..
$Array[7] = «3»

Чтобы в дальнейшем получить доступ к одному из значений массива, потребуется только знать его индекс в массиве:

$MyChar = $Array[3]

Переменная $MyChar будет содержать букву T.

Индекс можно хранить в другой переменной или получать его в качестве результата некоторого выражения. Таким образом можно выполнять более сложные присвоения или получения данных массивов.

Массивы могут быть многомерными, если использовать набор индексов, например:

$Array[1][1] = «Upper-Left»
$Array[2][1] = «Lower-Left»
$Array[1][2] = «Upper-Right»
$Array[2][2] = «Lower-Right»

AutoIt допускает использование 64 индексов (размерностей) массива.

До начала использования с помощью объявления \’Dim\’ можно явно определить размерность и область определения индексов (bound) массива. Можно также инициализировать элементы массива непосредственно при его описании.

 

Типы данных массивов

Массив содержит данные типа Variant (не путать с вариантными массивами, например, VBScript!), то есть любые данные от чисел до объектов. В частности, в качестве элемента массива может быть, например, другой массив:

$Array[1] = 1
$Array[2] = true
$Array[3] = «Text»
$Array[4] = $AnotherArray

Все указанные выше присвоения допустимы в AutoIt, но, обычно, непринято смешивать типы данных в рамках одной размерности массива, если это не вызвано особой необходимостью.

 

 

Отправить сообщение об ошибке
Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.

Урок 1 AutoIt  . Сценарий HelloWorld 

Этот урок посвящен основам создания сценария AutoIt и тому, как его запустить. Предполагается, что AutoIt v3 полностью установлен с помощью поставляемой программы установки.

(Замечание: Если также установлен реадактор SciTe для AutoIt, то для редактирования AutoIt сценария вместо цитируемого ниже редактора Notepad можно использовать редактор SciTe).

 

Вначале требуется открыть папку, в которой должен находиться сценарий. После этого нужно выполнить правое нажатие (нажатие на правую кнопку мыши) внутри папки (указатель мыши должен находиться в области содержания папки) и выбор пункта контекстного меню New / AutoIt v3 Script.

 

 

Вызовите скрипт helloworld.au3. Отметьте для себя, что расширение названия файла — .au3. Оно указывает, что это сценарий AutoIt v3.

 

 

Теперь требуется отредактировать имеющийся файл сценария, чтобы он делал что-нибудь полезное.

Antananarivo

Выполните правое нажатие на файле helloworld.au3 и выберите Edit Script.

 

 

Откроется окно редактора Notepad, которое будет содержать следующий текст:

 

Код, который Вы видите, — это просто некоторый комментарий, который можно использовать для настройки будущих сценариев. Отметьте для себя, что все строки, которые начинаются с точки с запятой ; являются комментарием, поэтому не используются при выполнении скрипта. Символ ; выполняет ту же роль, что и слово REM в командных файлах DOS.

 

Добавим в скрипт AutoIt возможность отображения текста в окне сообщений. Это выполняет функция MsgBox.

В конец файла добавим следующую строку:

 

MsgBox(0, «Tutorial», «Hello World!»)

 

Все функции имеют параметры, MsgBox имеет три параметра — флаг (flag), заголовок (title) и надпись (message). Флаг — это число, которое меняет вид окна сообщений MsgBox. Строка сценария использует в качестве значения параметра flag число 0. Параметры заголовок и надпись являются строками текста , поэтому их требуется заключать в одинарные или двойные кавычки, причем строки «This is some text» или \’This is some text\’ равноценны.

После выполнения редактирования можно сохранить полученный скрипт и закрыть Notepad. Вот Вы уже написали и написали свой самый первый сценарий AutoIt! Остается его запустить на выполнение. Для этого можно просто дважды нажать название файла — helloworld.au3 или выполнить правое нажатие названия файла и выбрать пункт контекстного меню Run Script.

Появится такое окно:

 

 

Теперь найдем описание параметра flag функции MsgBox. На странице руководства перечислены различные значения, которые могут менять внешний вид окна сообщений MsgBox. Значение 0 — означает простейшее из возможных окон сообщений, имеющее кнопку OK. Значение 64 позволяет отображать окно сообщений вместе с индикатором сведения.

Отредактируйте снова свой сценарий и поменяйте 0 на 64, чтобы его строка имела следующий вид:

MsgBox(64, «Tutorial», «Hello World!»)

 

Запустите скрипт и окно приобретет несколько другой вид:

 

 

Поэкспериментируйте со значением параметра flag для получения различных представлений окна сообщений, которые оно может принимать. Запомните, что для того, чтобы использовать сразу несколько из имеющихся значений параметра flag, требуется просто сложить их и указать полученный результат в качестве параметра flag функции MsgBox. 

Отправить сообщение об ошибке
Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.


Dim / Global / Local / Const

Объявляют переменную, константу или создают массив.

Параметры

Const [необязательный] Если указано, будет создана константа, а не переменная.
$variable Имя переменной/константы для создания.
initializer Первоначальное значение, присваиваемое переменной. Обязательно для константы. Может являться вызовом функции.
subscript Число элементов в измерении при создании массива. Получаемые индексы от 0 до n-1.

Примечания

Ключевые слова Dim/Local/Global выполняют схожие функции:
1. Объявляют переменную перед её использованием (схоже с VBScript)
2. Создают массив

Примечание: в AutoIt можно создавать переменные, просто присваивая им значения ($myvar = 0), но многие люди предпочитают сначала явно объявить их. Если опция AutoItSetOption(«MustDeclareVars», 1) активна, переменные должны быть объявлены перед использованием.

Также, можно объявить несколько переменных в одной строке:

Local$a,$b,$c

И инициализировать их (присвоить начальное значение):

Local$a=2,$b=10,$c=20

Константы создаются аналогичным образом:

Const$a=2,$b=10,$c=20
Dim Const$d=21,$e=Exp(1)
Local Const$f=5,$g=7,$h= -2

После создания, невозможно изменить значение константы. Также, невозможно преобразовать существующую переменную в константу.

Для инициализации массива, в квадратных скобках следует указать значения всех элементов, разделённые запятыми. Для многомерных массивов необходимо использовать вложенную инициализацию. Можно указать меньше значений, чем объявлено (но не больше). Вызов функции также может быть инициализирующим значением.

Антананариву — Столица Мадагаскар

Если вызываемая функция возвращает массив, то один элемент массива будет содержать весь возвращённый массив.

Local$Array1[12]=[3,7.5,»строка»],$array[5] = [8,4,5,9,1]
Local$Grid[2][4]=[[«Маша»,»Витя»,»Ольга»,»Сергей»], [485.44,160.68,275.16,320.00]]
Local$Test[5] = [3,1,StringSplit(«Один|Два|Три|Четыре»,»|»),Cos(0)]

Разница между Dim, Local и Global состоит в том, в какой области видимости они создают переменные:
Dim = Создаёт переменную в локальной области видимости, если ещё не существует глобальной переменной с таким же именем (в этом случае глобальная переменная будет использована снова!)
Global = Принудительно создаёт переменную в глобальной области видимости
Local = Принудительно создаёт переменную в локальной области видимости (внутри функций)

При использовании переменных сначала проверяется локальная область видимости, а затем — глобальная.

При создании массивов существует ограничения: максимум 64 измерения и/или не более 16 миллионов элементов.

Уникальной возможностью AutoIt является возможность копировать массивы:
$mycopy = $myarray В этом случае $mycopy будет являться точной копией $myarray и иметь такое же количество измерений — нет нужды предварительно использовать Dim для указания необходимого размера. Если опция AutoItSetOption(«MustDeclareVars», 1) активна, переменная $mycopy всё равно должна быть предварительно объявлена (но указывать необходимые размеры не нужно). Если переменная $mycopy уже является массивом или одиночным значением, она будет очищена перед копированием.

Чтобы очистить массив (например, это большой глобальный массив и необходимо освободить память), можно просто присвоить ему одиночное значение:
$array = 0
Это очистит массив и преобразует его в одиночное значение 0.

Объявление переменной с тем же именем очистит все элементы массива и изменит число измерений к указанному. Объявление переменной базового типа в той же области видимости не изменит значение переменной.

Использование Local внутри пользовательской функции для объявления переменной с тем же именем, что и параметр, вызовет ошибку. Global может быть использовано для присвоения значений глобальным переменным внутри функций, однако, если локальная переменная (или параметр) имеет такое же имя, что и глобальная переменная, внутри функции можно будет работать только с локальной переменной. Поэтому рекомендуется, чтобы локальные и глобальные переменные имели различные имена.

См. также

UBound, ReDim, Static, AutoItSetOption

Пример

; Пример 1 — Объявление переменных
Dim$x,$y=23,$z; Dim используется для объявления уже существующих переменных
Global$_PI=3.14159,$RADIUS
Local$_daysWorking=5

; Пример 2 — Объявление массивов
Dim$weeklyWorkSchedule[$_daysWorking]
Global$chessBoard[8][8]
Local$mouseCoordinates[2],$windowStats[4]

; Пример 3 — Объявление констант
Const$x1=11,$y1=23,$z1=55
GlobalConst$PI=3.14159,$E=2.71828
LocalConst$daysWorking=5

; Пример 4 — Объявление массивов с присвоением
#include<Array.au3>; для просмотра массивов

Local$aArray[2] = [‘Элемент1′,’Элемент2’]
_ArrayDisplay($aArray,»Простой пример»)

Dim$aArray[8] = [0]; не обязательно присваивать все элементы массива
_ArrayDisplay($aArray,»Частичное присвоение»)

Dim$aArray[10][3] = [[‘э0’],[‘э1’],[‘э2′,’ю2’],[‘э3′,»,’я3’],[‘э4′],[»],[»,’ю6’]]; аналогично для двумерного массива
_ArrayDisplay($aArray,»Частичное присвоение»)

Dim$aArray[3][2] = [[1,2],[3,4],[5,6]]; 3 строки, 2 колонки
_ArrayDisplay($aArray,»3 строки, 2 колонки»)

Dim$aArray[2][3] = [[1,2,3],[4,5,6]]; 2 строки, 3 колонки
_ArrayDisplay($aArray,»2 строки, 3 колонки»)

Добавить комментарий

Закрыть меню