Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1333
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
Gracias por la respuesta, no eres nada malo)
Ahora todo tiene sentido)
UPD
Esta construcción también funciona
Preste atención a lo que devuelve el método At(). Si devuelve NULL, se estrellará por un error crítico. Antes de acceder a un puntero a un objeto, comprueba que no es NULL
Ya lo he notado)
Así que la solución es declarar objetos globalmente vacíos....
¿Y si no se sabe de antemano cuántos serán? ¿Sólo declarar "con reserva"? :)
P.D. No encontré esta forma de declarar objetos en la ayuda incorporada
Una vez Artyom me escribió esta clase. No puedo explicar en detalle cómo funciona. Pero Artem lo recordará y podrá explicarlo. Aquí está la clase en sí
Y aquí está el bucle de creación de punteros en OnInit()
y en OnTimer()
ArraySize(Rates) es el tamaño del array de estructuras en el que se encuentran los caracteres con los que se va a trabajar.
Artyom me escribió una vez esta clase. No puedo explicar en detalle cómo funciona. Pero Artyom lo recordará y podrá explicarlo. Aquí está la clase en sí
Y aquí está el bucle de creación de punteros en OnInit()
y en OnTimer()
ArraySize(Rates) es el tamaño del array de estructuras donde se listan los caracteres a trabajar.
Aquí:
Yo lo haría antes que el total - simplemente por la razón de que estás leyendo caracteres del array Rates (¿verdad?), creando instancias de la nueva clase de barra y añadiéndolas a la lista.
En cualquier error de adición, el tamaño de la lista de punteros a instancias de la nueva clase de barra no coincidirá con el tamaño del array Rates.
En general, debe ser algo así:
Y aquí es donde también hay que comprobar si se ha añadido con éxito a la lista:
algo así:
para evitar pérdidas de memoria cuando se añade por error un puntero a un nuevo objeto a la listaAquí:
Yo lo haría antes que el total - simplemente por la razón de que se leen los caracteres del array Rates (¿no?), se crean instancias de la nueva clase bar y se añaden a la lista.
En cualquier error de adición, el tamaño de la lista de punteros a instancias de la nueva clase de barra no coincidirá con el tamaño del array Rates.
En general, debe ser algo así:
Y aquí es donde también hay que comprobar si se ha añadido con éxito a la lista:
algo así:
para evitar pérdidas de memoria cuando se añade por error un puntero a un nuevo objeto a la listaGracias. Lo tengo, lo corregiré de esta manera:)))
Odio continuar; operador y trato de no usarlo. Exclusivamente en casos desesperados.
en qué se diferencia de
Otra cosa es que en caso de error se borre el puntero fallido... Pero incluso aquí podemos prescindir de hated continue; simplemente borrando Print(). Era necesario durante la depuración y tratar de entender lo que está pasando, y si durante el trabajo se produce algún error, no voy a entender lo que está mal de todos modos ... Es más fácil volver a instalar el sistema operativo que entender los registros.Ya que estamos en el tema, dinos, sin entrar en detalles, cuál es la diferencia entre un puntero y una variable de clase, y cuál es preferible. Puedo leer sobre ello en Internet con detalles difíciles de entender. Me basta con una comprensión superficial, por así decirlo...
Preste atención a lo que devuelve el método At(). Si devuelve NULL, se estrellará por un error crítico. Antes de acceder a un puntero a un objeto, comprueba que no es NULL.
Artem, gracias por el valioso comentario)
Gracias. Lo entiendo, lo arreglaré así... :)))
Odio el operador continue; e intento no usarlo. Exclusivamente en casos desesperados.
En qué se diferencia de
La iteración del bucle no terminará ni comenzará una nueva, sino que pasará a la siguiente iteración. La lógica cambiará.
Artyom me escribió una vez esta clase. No puedo explicar en detalle cómo funciona. Pero Artyom lo recordará y podrá explicarlo. De todos modos, aquí está la clase en sí
Alexey, gracias por una respuesta tan detallada.
El propósito de la variable ret en el fragmento de código citado no está claro...
¿Para qué se calcula, si en algún caso el método devuelve array[0]?
P.D.
¿Y por qué usar esto en un método de clase? Estamos trabajando con miembros de esta clase particular...
Gracias. Lo entiendo, lo arreglaré así... :)))
Odio el operador continue; e intento no usarlo. Exclusivamente en casos desesperados.
en qué se diferencia de
Otra cosa es que, cuando se produzca un error, se borre el puntero fallido... Pero aquí también se puede prescindir de hated continue; basta con borrar Print(). Era necesario durante la depuración y tratar de entender lo que está pasando, y si durante el trabajo se produce algún error, no voy a entender lo que está mal de todos modos ... Prefiero reinstalar el sistema operativo que entender los registros.Ya que estamos en el tema, dinos, sin entrar en detalles, cuál es la diferencia entre un puntero y una variable de clase, y cuál es preferible. Puedo leer sobre ello en Internet con detalles difíciles de entender. A mí me basta con una comprensión superficial, por así decirlo.
La iteración del ciclo no terminará y no comenzará una nueva, sino que pasará al siguiente Si. La lógica cambiará.
Alexey, gracias por una respuesta tan detallada.
El propósito de la variable ret en el fragmento de código dado no está claro...
¿Por qué se calcula si el método devuelve array[0] de todos modos?