Discusión sobre el artículo "Trabajo con el SGBD MySQL desde MQL5 (MQL4)" - página 14
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
empezaron a aparecer todo el tiempo, ¿qué significa eso?
al ejecutar mi código en esta línea.
if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
En MQL todas las cadenas son Unicode y las pasas en lugar de ANSI.
Es por eso que el dllka se bloquea.
En MQL todas las cadenas son Unicode y las pasas en lugar de ANSI.
Por eso se cuelga la dll.
Si quito la condición, todo funciona, en general, se puede rehacer de otra manera, simplemente no entiendo por qué se bloquea.
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
En MQL todas las cadenas son Unicode y las pasas en lugar de ANSI.
Por eso se cuelga la dll.
Si quito la condición, todo funciona, en general, se puede rehacer de otra manera, simplemente no entiendo por qué se bloquea
//if(DB==-1){
DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
//}
res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);
¿Cuál es la lógica? ¿Tiene una conexión antes de este código? ¿A qué es igual DB antes de la condición? Si la variable DB no está inicializada, probablemente sea por esto.
Y en el último ejemplo abres una conexión a la base de datos normalmente y por eso el cursor también funciona.
¿Funcionan los scripts suministrados con la DLL?¡Saludos Eugene!
Gracias por el script. Decidí implementarlo en mi proyecto. Pero en la etapa de pruebas de los scripts que ha adjuntado al proyecto tengo 1 error, no está claro. ReadIni no funciona. Tal vez hago algo mal, pero siempre devuelve valores vacíos de ini. ¿Cual puede ser la razón? Sospecho que no encuentra el archivo en la ruta especificada, pero he comprobado desde diferentes directorios todo es correcto y en su lugar.
Si prescribo los datos para la conexión en el código directamente, todo funciona bien.
Estoy utilizando mt4.¡Saludos Eugene!
Gracias por el script. Decidí implementarlo en mi proyecto. Pero en la etapa de pruebas de los scripts que adjuntaste al proyecto tengo 1 bug, no claro. ReadIni no funciona. Tal vez hago algo mal, pero siempre devuelve valores vacíos de ini. ¿Cual puede ser la razón? Sospecho que no encuentra el fichero en la ruta especificada, pero he comprobado desde diferentes directorios que todo está correcto y en su sitio.
Si prescribo los datos para la conexión en el código directamente, todo funciona bien.
Estoy utilizando mt4.Usted debe comprobar las rutas ... UAC más probable es que afecta. ¿Qué ruta se establece en INI? ¿Al directorio de la terminal o a Data?
Y aquí hay otro problema: el texto ruso se inserta en karakaziaby. Por supuesto entiendo que el dll está recodificando, pero mi base de datos es UTF-8. ¿Qué debo hacer para insertar texto ruso legible...? me hará la vida mucho más fácil...?
Sí, la conversión a ASCII está en marcha, también hay un comentario al respecto de colegas chinos. En cuanto tenga tiempo intentaré arreglarlo.
Tienes que comprobar las rutas... UAC probablemente afecta. ¿A qué ruta pones INI? ¿Al directorio de la terminal o a Data?
Hay ejemplos en tu archivo...en ellos dejé todo como está. Sólo cambié el ini.
El problema se solucionó. Yo mismo fui un estúpido. Antes la carpeta con MT4 y la carpeta con datos estaban unidas. Ahora la carpeta para los datos está guardada en una sección especial de Windows. Ahora la ruta es correcto tomar TerminalInfoString(TERMINAL_DATA_PATH) en lugar de TerminalPath().
Hay ejemplos en tu archivo...en ellos dejé todo como estaba. Solo cambie el ini.
El problema se solucionó. Yo mismo fui estupido. Antes la carpeta con MT4 y la carpeta con datos estaban unidas. Ahora la carpeta para los datos se almacena en una sección especial de Windows. Ahora la ruta es correcto tomar TerminalInfoString(TERMINAL_DATA_PATH) en lugar de TerminalPath().
Hmm... es en algún lugar de la antigua biblioteca, en las últimas versiones (publicado en la discusión) lo he corregido si mi memoria no me falla :)
Ok. entonces el problema del UTF permanece. Intentaré resolverlo esta semana hasta el fin de semana, si no estoy sobrecargado de trabajo.