- 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
Elimina de la matriz el número indicado de elementos, comenzando por el índice indicado.
bool ArrayRemove(
|
Parámetros
array[]
[in][out] Matriz.
start
[in] Índice desde el que se comienza a eliminar los elementos de la matriz.
count=WHOLE_ARRAY
[in] Número de elementos a eliminar. El valor WHOLE_ARRAY indica la eliminación de todos los elementos desde el índice establecido hasta el final de la matriz.
Valor retornado
Retorna true en caso de éxito, de lo contrario, false. Para obtener información sobre el error, es necesario llamar la función GetLastError(). Posibles errores:
- 5052 ERR_SMALL_ARRAY (el valor start es demasiado grande),
- 5056 ERR_SERIES_ARRAY (la matriz no puede modificarse, búfer de indicador),
- 4003 ERR_INVALID_PARAMETER (el valor count es demasiado grande),
- 4005 - ERR_STRUCT_WITHOBJECTS_ORCLASS (matriz de tamaño fijo, que contiene objetos complejos con destructor),
- 4006 - ERR_INVALID_ARRAY (matriz de tamaño fijo, que contiene objetos de estructuras o clases con destructor).
Observación
Si la función se usa para una matriz de tamaño fijo, el propio tamaño de la matriz no cambia: en este caso, además, tiene lugar el copiado físico de la "cola" restante en la posición start. Para comprender exactamente el funcionamiento de la función, mire el ejemplo de abajo. El copiado "físico" significa que los objetos copiados no se crean con la ayuda de la llamada de un constructor u operador de copiado, sino que simplemente sucede el copiado de la representación binaria del objeto. Precisamente por este motivo se prohíbe aplicar la función ArrayRemove() a una matriz de tamaño fijo que contenga objetos con destructor (se mostrará el error ERR_INVALID_ARRAY o ERR_STRUCT_WITHOBJECTS_ORCLASS). Así, al eliminar este objeto el destructor deberá ser llamado dos veces: para el objeto original y para su copia.
No es posible eliminar los elementos de las matrices dinámicas designadas como búferes de indicador con la función SetIndexBuffer(), esto provocará la aparición del error ERR_SERIES_ARRAY. Para los búferes de indicador, todas las operaciones de cambio de tamaño son realizadas por el subsistema ejecutor del terminal.
Ejemplo:
//+------------------------------------------------------------------+
|
Mire también
ArrayInsert, ArrayCopy, ArrayResize, ArrayFree