Анимация
JavaScript
|
Главная Библионтека
Пример использования: DelArrayElement(AR LONG, GetArrayId("MyArray"), 0x100);
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
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
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
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 |