- ArrayBsearch
- ArrayCopy
- ArrayCompare
- ArrayFree
- ArrayGetAsSeries
- ArrayInitialize
- ArrayFill
- ArrayIsDynamic
- ArrayIsSeries
- ArrayMaximum
- ArrayMinimum
- ArrayPrint
- ArrayRange
- ArrayResize
- ArrayInsert
- ArrayRemove
- ArrayReverse
- ArraySetAsSeries
- ArraySize
- ArraySort
- ArraySwap
- ArrayToFP16
- ArrayToFP8
- ArrayFromFP16
- ArrayFromFP8
ArrayRemove
Удаляет из массива указанное число элементов начиная с указанного индекса.
bool ArrayRemove(
|
Параметры
array[]
[in][out] Массив.
start
[in] Индекс, начиная с которого удаляются элементы массива.
count=WHOLE_ARRAY
[in] Количество удаляемых элементов. Значение WHOLE_ARRAY означает удаление всех элементов с указанного индекса до конца массива.
Возвращаемое значение
Возвращает true в случае успеха, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Возможные ошибки:
- 5052 – ERR_SMALL_ARRAY (значение start слишкое большое),
- 5056 – ERR_SERIES_ARRAY (массив не может быть изменен, индикаторный буфер),
- 4003 – ERR_INVALID_PARAMETER (значение count слишком большое),
- 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (массив фиксированного размера, который содержит сложные объекты с деструктором),
- 4006 - ERR_INVALID_ARRAY (массив фиксированного размера, который содержит объекты структур или классов с деструктором).
Примечание
Если функция используется для массива фиксированного размера, то сам размер массива не меняется: при этом происходит физическое копирование оставшегося "хвоста" в позицию start. Для точного понимания работы функции смотрите пример ниже. "Физическое" копирование означает, что копируемые объекты не создаются с помощью вызова конструктора или оператора копирования, а просто происходит копирование бинарного представления объекта. Именно по этой причине запрещается применять функцию ArrayRemove() к массиву фиксированного размера, содержащего объекты с деструктором (взводится ошибка ERR_INVALID_ARRAY или ERR_STRUCT_WITHOBJECTS_ORCLASS). Так как при удалении такого объекта деструктор должен быть вызван дважды – для первоначального объекта и его копии.
Нельзя удалять элементы из динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(), это приведет к появлению ошибки ERR_SERIES_ARRAY. Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала.
Пример:
//+------------------------------------------------------------------+
|
Смотри также
ArrayInsert, ArrayCopy, ArrayResize, ArrayFree