Для начала определим, что такое массив. Массив - это последовательная группа переменных с одним и тем же именем и типом (слово последовательная означает, что эти переменные расположены в памяти друг за другом по порядку). Так как все элементы массива имеют одинаковое имя, то обращаются к ним через индексы (порядковые номера), начиная с 0.
Сразу хочу отметить главное: ДЛЯ РАБОТЫ С МАССИВАМИ НЕ СУЩЕСТВУЕТ ОТДЕЛЬНЫХ ОПЕРАТОРОВ (ОПКОДОВ), С НИМИ МОЖНО ДЕЛАТЬ ВСЕ, ЧТО И С ОБЫЧНЫМИ ПЕРЕМЕННЫМИ.
Лучше всего работу с массивами показать на примере. Допустим нам требуется выводить цикле на экран число от 1 до 5 с небольшим интервалом:
;------------- Объявление массива и задание начальных значений:
:MyLabel_1
0004: $Current_id = 0 ; В этой переменной будет храниться номер индекса массива
0004: $Massiv($Current_id,5i) = 0 ; Эта строчка объявляет массив из 5 элементов (от 0 до 4)
0004: $Massiv(0) = 1 ;; integer values ; Присваиваем нулевому элементу массива значение 1
0004: $Massiv(1) = 2 ;; integer values ;
0004: $Massiv(2) = 3 ;; integer values ; ..............
0004: $Massiv(3) = 4 ;; integer values ;
0004: $Massiv(4) = 5 ;; integer values ; Присваиваем последнему элементу массива значение 5
;------------- Вывод на экран текущего значения массива $Massiv
:MyLabel_2
0001: wait 200 ms
0084: $Current_value = $Massiv($Current_id,10i) ;присваиваем переменной $Current_value значение элемента с номером $Current_id
04F7: status_text $Current_value 0 line 2 "MyText" ;и выводим на экран это значение
0002: jump JJMyLabel_3
;------------- Увеличение значение индекса
:MyLabel_3
0001: wait 250 ms
0008: $Current_id += 1 ;; integer values ;Увеличиваем значение индекса на еденицу
00D6: if 0
0038: $Current_id == 5 ;; integer values ;Если индекс = 5
004D: jump_if_false JJMyLabel_2
0004: $Current_id = 0 ;то сбрасываем его
0151: remove_status_text $Current_value ;убираем текст с экрана
0002: jump JJMyLabel_2
Если вы хотите использовать этот пример, то незабудьте создать запись в текстовой таблице main (что в american.gxt) с помощью редактора GXT файлов, например такую "MyText" = ~1~
___________
Polter 07.10.2005
465 Прочтений • [Работа с массивами в SA] [13.05.2012] [Комментариев: 0]