root | Дата: Воскресенье, 03.02.2013, 00:32 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
| Может хранить разные типы данных: массивы, строки, числа и тд. Доступ к элементам осуществляется по индексам, как и в обычных массивах.
Handle:CreateArray(blocksize=1, startsize=0);
Код Создает динамический глобальный массив ячеек (может расти и уменьшаться). Работает медленнее, чем обычный массив.
blocksize - размер, количество ячеек для каждого элемента, как new xz[][размер] (нельзя изменить после создания) startsize - индекс, позиция первого элемента (начало) ClearArray(Handle:array);
Код Удаляет все элементы, очищает массив - то же, что и ResizeArray(0) Handle:CloneArray(Handle:array);
Код Делает точную копию массива и возвращает новое Handle. Копия и оригинал - никак не связаны между собой. bool:ResizeArray(Handle:array, newsize);
Код Изменение размера массива. Если размер меньше текущего размера, то массив усекается. newsize - количество элементов в массиве GetArraySize(Handle:array) - возвращает количество элементов в массиве
PushArrayCell(Handle:array, any:value); - добавляет в конец массива значение (int, float, Handle, byte) PushArrayString(Handle:array, const String:value[]); - строку PushArrayArray(Handle:array, const any:values[], size=-1); - массив (size = кол-во элементов в массиве)
any:GetArrayCell(Handle:array, index, block=0, bool:asChar=false);
Код Получить (int, float, Handle, byte)
block = блок для чтения (полезно, если его размер > 0) asChar = читать как байт (необязательно) GetArrayString(Handle:array, index, String:buffer[], maxlength);
Код Получить строку. Возвращает количество символов в строке. GetArrayArray(Handle:array, index, any:buffer[], size=-1); - получить массив
SetArrayCell(Handle:array, index, any:value, block=0, bool:asChar=false); - изменть значение в массиве SetArrayString(Handle:array, index, const String:buffer[]); - изменить значение (строку) в массиве SetArrayArray(Handle:array, index, const any:values[], size=-1); - массив
ShiftArrayUp(Handle:array, index);
Код Сдвигает элементы вправо на 1 шаг, начиная с index. В итоге размер массива увеличивается на 1 и текущее значение в позиции index становится неопределенным. RemoveFromArray(Handle:array, index);
Код Удаляет элемент из массива по индексу. Те индексы, которые правее, смещаются влево на 1 шаг. SwapArrayItems(Handle:array, index1, index2); - меняет местами элементы
FindStringInArray(Handle:array, const String:item[]);
Код Ищет строку в массиве и возвращает ее индекс-позицию, или -1, если не найдена FindValueInArray(Handle:array, any:item)
Код Работает как и FindStringInArray, только ищет (int, float, Handle, byte) Код для теста:
Код public OnPluginStart() { new Handle:ar = CreateArray(); PushArrayCell(ar, 5); PushArrayCell(ar, 12345.07); PushArrayString(ar, "music");
PrintToServer("элементов в массиве: %d\n", GetArraySize(ar));
PrintToServer("index 0 = %d", GetArrayCell(ar, 0)); PrintToServer("index 1 = %f", Float:GetArrayCell(ar, 1));
decl String:info[7]; GetArrayString(ar, 2, info, 7); PrintToServer("index 2 = %s", info); // строка обрезана, т.к. массив создан с маленьким размером }
|
|
| |