Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [ 120 ] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140

Определение

Значение

AR LONG

Элемент типа «длинное целое»

AR STR

Элемент типа «строка»

Пример использования:

DelArrayElement(AR LONG,

GetArrayId("MyArray"),

0x100);

Операнд

Пояснения

==tag Значение

AR STR Элемент типа «строка»

AR LONG Элемент типа «длинное целое»

Идентификатор массива

Индекс массива

Return

==return Пояснения

==1 Успешное завершение

==0 Ошибка

long GetFirstIndex(long tag,long id);

Функция возвращает индекс первого элемента разряженного массива. В отличие от «обычных» массивов, известных нам по языками С и Pascal, разряженные массивы могут начинаться с любого индекса, а не обязательно с нулевого.

«Первым» индексом разряженного массива будет индекс инициализированного элемента с наименьшим числовым значением.

Например:

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetArrayLong(a,0x100,0x666);

SetArrayLong(a,0x77,0x67);

SetArrayLong(a,0x210,0x777);

Message("0x%X \n",

GetFirstIndex(AR LONG,a)

DeleteArray(a);

0x77

Операнд

Пояснения

==tag

Значение

AR STR

Элемент типа «строка»

AR LONG

Элемент типа «длинное целое»

Идентификатор массива

Return

==return

Пояснения

!=BADADDR

Индекс первого элемента разряженного массива

==BADADDR

Ошибка



long GetLastIndex(long tag,long id);

Функция возвращает индекс последнего элемента разряженного массива. Обратите внимание, что число элементов разряженного массива обычно много меньше, чем индекс последнего из них.

Так, например, массив может состоять всего из трех элементов с индексами, скажем, (0x5, 0x777, 0x666777) - тогда функция GetLastIndex возвратит 0x666777, тогда как размер массива равен всего лишь трем.

К сожалению не предоставлено никаких функций, позволяющих узнать размер массива. Все что можно сделать это пройтись по цепочке элементов функциями GetNextIndex (GetPrevIndex).

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

Пример использования:

auto a;

DeleteArray(GetArrayId("MyArray")); a=CreateArray("MyArray");

SetArrayLong(a,0x100,0x666);

SetArrayLong(a,0x77,0x67); SetArrayLong(a,0x210,0x777); Message("0x%X \n", GetLastIndex(AR LONG,a)

DeleteArray(a);

0x210

Операнд

Пояснения

==tag Значение

AR STR Элемент типа «строка»

AR LONG Элемент типа «длинное целое»

Идентификатор массива

Return

==return

Пояснения

!=BADADDR

Индекс последнего элемента разряженного массива

==BADADDR

Ошибка

long GetNextIndex(long tag,long id,long idx);

Функция возвращает следующий индекс разраженного массива. Как уже было сказано выше, в разряженных массивах индексы не обязательно следуют друг за другом, а могут быть разделены «дырами» произвольного размера.

Поэтому, для «путешествия» по цепочке инициализированных элементов массива и была введена функция GetNextIndex.

Передаваемый текущий индекс (idx) не обязательно должен существовать в природе, - функция возвращает первый же инициализированный за ним элемент.

Это дает возможность отказаться от использования функции GetFirstIndex, поскольку GetNextIndex(,,0) ему полностью эквивалентен, что и показано на примере, приведенном ниже:

auto a,b; b=0;

DeleteArray(GetArrayId("MyArray"));



a=CreateArray("MyArray");

SetArrayLong(a,0x100,0x666);

SetArrayLong(a,0x77,0x67);

SetArrayLong(a,0x210,0x777);

while(1)

b=GetNextIndex(AR LONG,a,b);

if (b==-1) break; Message("0x%X \n",b); }

DeleteArray(a);

0x77

0x100

0x210

Операнд

Пояснения

==tag

Значение

AR STR

Элемент типа «строка»

AR LONG

Элемент типа «длинное целое»

Идентификатор массива

Индекс массива

Return

==return

Пояснения

!=BADADDR

Следующий индекс

==BADADDR

Ошибка

long GetPrevIndex(long tag,long id,long idx)

Функция возвращает предыдущий индекс разраженного массива. Как уже было сказано выше, в разряженных массивах индексы не обязательно следуют друг за другом, а могут быть разделены «дырами» произвольного размера.

Поэтому, для «путешествия» по цепочке инициализированных элементов массива и была введена функция GetPrevIndex.

Передаваемый текущий индекс (idx) не обязательно должен существовать в природе, - функция возвращает первый же предшествующий ему инициализированный элемент.

Это дает возможность отказаться от использования функции GetPrevIndex, поскольку GetPrevIndex(,,-1) ему полностью эквивалентен, что и показано на примере, приведенном ниже:

auto a,b;

b=0;

DeleteArray(GetArrayId("MyArray")); a=CreateArray("MyArray"); SetArrayLong(a,0x100,0x666); SetArrayLong(a,0x77,0x67);

SetArrayLong(a,0x210,0x777);

while(1)

b=GetPrevIndex(AR LONG,a,b);

if (b==-1) break;

Message("0x%X \n",b);

DeleteArray(a);



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 [ 120 ] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140