Errores, fallos, preguntas - página 2707
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
Por favor, los desarrolladores(@Ilyas) presten atención al error detectado.
Bug MT5 (build 2377) al seleccionar la función sobrecargada adecuada para un argumento de tipo puntero, la función con conversión de tipo a puntero a la clasepadre en lugar de a la clase base tiene mayor prioridad.
Tampoco hay error de compilación cuando el puntero a la clase base se asigna al puntero a la clase padre.
Error posiblemente relacionado:https://www.mql5.com/ru/forum/1111/page2682#comment_15591437
Gracias por el mensaje.
Corregido por
Runtime Error: Incorrect casting of pointers. Expected result: printf("A*");Se mantiene como está - este código puede resultar de la especialización de la plantilla (en una parte que no funcionará, pero que afectará a la compilación).
Sí, efectivamente en tu código, en el puerto 80 se devuelve la cabecera, en el 443 no.
Volví a revisar tu código y no vi la función SocketTlsHandshake allí.
Tu código no hace un apretón de manos. Esta puede ser la razón.
Aunque la ayuda de esta función dice que no es necesaria si se conecta al puerto 443.
Exactamente, ese no es mi código, sino el del ejemplo de los desarrolladores (los sockets de MQ tienen algunas características poco intuitivas, que se averiguan a veces en el foro, así que recurrí al ejemplo estándar). SocketTlsHandshake lo he probado - siempre devuelve false en todas las condiciones y no tiene ningún efecto en la resolución del problema. Dado que se devuelven los datos del certificado, el apretón de manos se lleva a cabo. Incluso la cabecera, a juzgar por su longitud, llega, pero no vuelve al código MQL. El código de error es demasiado genérico y el propio error es cuestionable. Necesitamos una visión interna.
No es necesario utilizar la función SocketTlsHandshake si la conexión es inicialmente segura ("https://" o puerto 443 o 465)
La función se utiliza en casos/protocolos especiales
No es necesario utilizar SocketTlsHandshake si la conexión es inicialmente segura ("https://" o el puerto 443 o 465)
La función se utiliza en casos/protocolos especiales
No lo uso. Se adjunta el código para reproducir el problema.
No lo uso. Se adjunta el código para reproducir el problema.
Sustituir SocketTlsRead por SocketTlsReadAvailable
Sustituir SocketTlsRead por SocketTlsReadAvailable
¿Puede ser más específico? En la documentación del ejemplo se utilizaba SocketTlsRead. ¿Por qué no se usó SocketTlsReadAvailable allí?
¿Cuándo debo utilizar una función y cuándo otra?
Cómo escribir un código universal para bloquear una lectura de un socket, adecuado tanto para conexiones protegidas como no protegidas - no tenemos la función SocketReadAvailable, ¿verdad?
PS. Cambió la función. El error no ha desaparecido. Aquí está el código actualizado. GetLastError devuelve 0.
En el probador visual, la llamada a la funciónCopyTicksRange del indicadortermina con el error 4014 (ERR_FUNCTION_NOT_ALLOWED).
El mismo indicador funciona bien en línea en el mismo instrumento. ¿Cuál es el problema? ¿Está prohibida esta función en el probador? No he encontrado ninguna mención al respecto en la ayuda.
En el probador visual, la llamada a la funciónCopyTicksRange del indicadortermina con el error 4014 (ERR_FUNCTION_NOT_ALLOWED).
El mismo indicador funciona bien en línea en el mismo instrumento. ¿Cuál es el problema? ¿Está prohibida esta función en el probador? No lo encontré en la ayuda.
¿Pruebas con garrapatas reales?
Exactamente, ese no es mi código, sino el del ejemplo de los desarrolladores (los sockets de MQ tienen algunas características poco intuitivas que a veces se resuelven en el foro, así que recurrí al ejemplo estándar). Probé con SocketTlsHandshake - siempre devuelve false en todas las condiciones y no tiene efecto en la resolución del problema. Dado que se devuelven los datos del certificado, el apretón de manos se lleva a cabo. Incluso la cabecera, a juzgar por su longitud, viene, pero simplemente no vuelve al código MQL. El código de error es demasiado genérico y el propio error es cuestionable. Necesitamos una visión interna.
Sí, a mí también me ha sorprendido que sin SocketTlsHandshake se devuelva el certificado.
Pero con la función SocketTlsHandshake, llama al error.
Hay una especie de lógica implícita en el comportamiento.
UPD:
Se ha visto la recomendación de Ilyas.
Sí, sin esta característica, no hay problema con la conexión.
El problema es la lectura.
Sustituir SocketTlsRead por SocketTlsReadAvailable
He intentado el mismo reemplazo con SocketTlsReadAvailable
El comportamiento es el mismo que conSocketTlsRead
UPD:
El mismo problema existe cuando se utiliza SocketTlsHandshake en un puerto diferente.