Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Copiar el array "en sí mismo", comenzando en la posición siguiente a la que se va a borrar y escribiendo desde la que se va a borrar. Y luego cambiar el tamaño como Grigori.S.B sugirió
Curiosamente, si he entendido bien, ¿es necesario utilizar esta función?
Buenos días, gracias por su respuesta.
Supongo que no te has dado cuenta, puedes mirar arriba, todas las preguntas eran sobre MQL5.
Entiendo que la diferencia no es crucial a veces, pero sin embargo. La función que has citado redimensiona el array, tal vez cortando elementos extra si se reduce el tamaño.
Esto no es lo que se necesita. Para eliminar un elemento hay que buscarlo por su valor. Yo también probé esta función, escribí sobre ella en el #23. Gracias de todos modos.
Yo también no le he prestado atención. mql5 tiene la función ArrayRemove y no hay problemas.
En este casoArrayRemove es más adecuado, hay un ejemplo en el manual, funciona exactamente igual
El único problema es que estos ejemplos y funciones están diseñados para matrices unidimensionales, y no quieren trabajar con matrices bidimensionales.
Creo que me falta algo muy importante y fundamental. ¿Pero qué es?
Te digo que ya he perdido el libro de referencia.
En este casoArrayRemove es más adecuado, hay un ejemplo en el manual, funciona exactamente así
El único problema es que estos ejemplos y funciones están diseñados para matrices unidimensionales, y no quieren trabajar con matrices bidimensionales.
Creo que me falta algo muy importante y fundamental. ¿Pero qué es?
Te digo que ya le he perdido la pista.
En el caso de un array bidimensional, hay que multiplicar por 2 el número de línea para el borrado. Para una matriz tridimensional multiplica por 3...
No entiendo muy bien esto, ¿podrías explicarlo con más detalle, o mejor aún, mostrarme la edición en un trozo de mi código, lo he puesto arriba. Si es un inconveniente, pues da igual, ya lo resolveré de alguna manera.
No, el orden no es importante, sólo hay que eliminar una entrada conocida (encontrada por el conocimiento, el índice es conocido). Puede estar en cualquier parte del array (al principio, en medio, al final).ArrayRemove está muy bien, todo estaría bien, pero ¿cómo aplicar esta función a un array bidimensional? el manual no dice nada al respecto.
No, el orden no es importante, sólo necesitamos eliminar un registro conocido (encontrado por la cognición, el índice es conocido). Puede estar en cualquier parte del array (al principio, en el medio, al final).ArrayRemove está muy bien, todo estaría bien, pero ¿cómo aplicar esta función a un array bidimensional? No hay nada en el manual al respecto.
En este casoArrayRemove es más adecuado, hay un ejemplo en el manual, funciona exactamente así
El único problema es que estos ejemplos y funciones están diseñados para matrices unidimensionales, y no quieren trabajar con matrices bidimensionales.
Creo que me falta algo muy importante y fundamental. ¿Pero qué es?
Te digo que he perdido el libro de referencia.
Eso es una tontería. He utilizado esta función sin leer el manual. En el depurador he visto cómo se borraba el elemento y el tamaño del array se reducía instantáneamente. Lo he comprobado, funciona incluso con un array de estructuras sin problemas. Ahora no puedo trabajar con el código, sino sólo con palabras: Por ejemplo, quiero borrar el 3er índice de un array de 2 dimensiones. Resulta que hay que eliminar los valores quinto y sexto. Al copiar, la función, SIN EMBARGO, ordena todos los valores en una matriz unidimensional y resulta que el tercer par comienza con el índice 5. Por lo general, se llega a la conclusión después de algunos experimentos.
En cuanto a ArrayRemove cuando pueda lo probaré en arrays de 2 a 4 dimensiones. Por falta de necesidad nunca lo he probado y no sospechaba que no funcionara.
Añadido:
Comprobado. No olvides que no puedes redimensionar un array estático. Por eso, en el ejemplo de la documentación el tamaño del array sigue siendo el mismo y las dos últimas cadenas se repiten. Cuando se eliminan filas de un array dinámico, el tamaño cambia sin problemas.
El manual debe ser fregado hasta los agujeros:)))) en el monitor.
Aquí está la matriz tridimensional y el resultado:
Eso es una tontería. He utilizado esta función sin leer el manual. En el depurador he visto como se borra un elemento y el tamaño del array se reduce instantáneamente. Comprobado, incluso en una matriz de estructuras funciona sin problemas. Ahora no puedo trabajar con el código, sino sólo con palabras: Por ejemplo, quiero borrar el 3er índice de un array de 2 dimensiones. Resulta que hay que eliminar los valores quinto y sexto. Al copiar, la función, SIN EMBARGO, ordena todos los valores en una matriz unidimensional y resulta que el tercer par comienza con el índice 5. Por lo general, se llega a la conclusión después de algunos experimentos.
En cuanto a ArrayRemove cuando pueda lo probaré en arrays de 2 a 4 dimensiones. Por falta de necesidad nunca lo he probado y no sospechaba que no funcionara.
Añadido:
Comprobado. No olvides que no puedes redimensionar un array estático. Por eso, en el ejemplo de la documentación el tamaño del array sigue siendo el mismo y las dos últimas cadenas se repiten. Cuando se eliminan filas de un array dinámico, el tamaño cambia sin problemas.
El directorio tiene que ser fregado a los agujeros:)))) en el monitor.
Aquí he hecho un array de 3 dimensiones y el resultado:
Tu ejemplo es muy lento, con un gran número de valores esto se notará.
¿Con un montón de qué? ¿Elementos de la matriz que ni siquiera se llenan en cada tic? ¿Cómo se notará?