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
La simulación de las antiguas matrices de cadenas Ansi es complicada, pero aún es posible. (Esto va a depender de que la DLL se comporte bien, particularmente si pasa datos de vuelta a MQL4 alterando el contenido del array. Sólo he probado esto contra el código C++ de ejemplo en la parte inferior, no contra algo más realista como la biblioteca MySql).
Por ejemplo, el código anterior funciona con la siguiente DLL que hace un cuadro de mensaje para cada cadena en un array y luego invierte la cadena antes de regresar a MT4:
No puedo explicar lo útiles que son tus fragmentos. Muchas gracias. He seguido adelante y he escrito un wrapper de MySQL en MQL4 puro (para la versión UNICODE) que se comunica con libmysql.dll (ANSI) utilizando las técnicas que has mencionado y las que he encontrado en la librería EAX MySQL (MQL5).
Te agradecería mucho que le echaras un vistazo a mi código y me dijeras las cosas que hay que mejorar o contribuir a él, ya que estoy bastante seguro de que se puede mejorar.
gchrmt4,
¿Puedes mostrarme cómo puedo pasar una cadena a través de una llamada a una función DLL, o indicarme algún código de ejemplo?
Lo que busco es la confirmación de que puedo hacer una llamada como
#importar
int llamar_una_cadena_función(cadena esto_es_una_cadena);
#importar
...
...
string foo1 = "esto es una cadena";
int retruncode = call_a_string_function(foo1);
entonces, ¿cómo sería el código C para la función anterior? Sólo estoy buscando el ejemplo de rutina.
Por ejemplo
int call_a_string_function(char *this_a_string);
etc
Algunos dicen que hay que usar un array o un array de char, etc. Estoy buscando alguna aclaración. Sólo un simple ejemplo sobre el mejor enfoque como usted ha mencionado la fuga de memoria, etc.
saludos
gorick
gchrmt4,
¿Puedes mostrarme cómo puedo pasar una cadena a través de una llamada a una función DLL, o indicarme algún código de ejemplo?
Lo que busco es la confirmación de que puedo hacer una llamada como
#importar
int llamar_una_cadena_función(cadena esto_es_una_cadena);
#importar
...
...
string foo1 = "esto es una cadena";
int retruncode = call_a_string_function(foo1);
entonces, ¿cómo sería el código C para la función anterior? Sólo estoy buscando el ejemplo de rutina.
Por ejemplo
int call_a_string_function(char *this_a_string);
etc
Algunos dicen que hay que usar un array o un array de char, etc. Estoy buscando alguna aclaración. Sólo un simple ejemplo sobre el mejor enfoque como usted ha mencionado la fuga de memoria, etc.
saludos
gorick
Sí, gracias por eso. Realmente bien presentado y lo que esperaba. Sin embargo, parece que tengo problemas con las cadenas.
He creado un ejemplo de ese documento en C, por ejemplo, a continuación, para aceptar un valor de cadena como entrada y escribirlo en un archivo:
Escribo los valores en un archivo para comprobarlos.El MQL es el siguiente:
La salida del archivo es la siguiente:Estos son los valores de la cadena: R foooooooooooo1
Sólo devuelve la "R" o primer carácter de la cadena pasada? El "foooooooooooo1" fue insertado sólo para comprobar que estoy imprimiendo correctamente.
¿Alguien tiene una idea de lo que estoy haciendo mal?
Sí, gracias por eso. Realmente bien presentado y lo que esperaba. Sin embargo, parece que tengo problemas con las cadenas.
He creado un ejemplo de ese documento en C, por ejemplo, a continuación, para aceptar un valor de cadena como entrada y escribirlo en un archivo:
<suprimido>
¿Alguien tiene una idea de lo que estoy haciendo mal?
El problema está en tu código C, no en MQL4.
%s en printf() significa "cadena Ansi". Necesitas usar %ls
Sí, gracias por eso. Realmente bien presentado y lo que esperaba. Sin embargo, parece que tengo problemas con las cadenas.
He creado un ejemplo de ese documento en C, por ejemplo, a continuación, para aceptar un valor de cadena como entrada y escribirlo en un archivo:
Escribo los valores en un archivo para comprobarlo.El MQL es el siguiente:
La salida del archivo es la siguiente:Estos son los valores de la cadena: R foooooooooooo1
Sólo devuelve la "R" o primer carácter de la cadena pasada? El "foooooooooooo1" fue insertado sólo para comprobar que estoy imprimiendo correctamente.
¿Alguien tiene una idea de lo que estoy haciendo mal?
Hola,
Por favor, utilice el botón SRC cuando publique el código. Gracias.
Esta vez, lo he editado para ti.
Hola,
Por favor, utilice el botón SRC cuando publique el código. Gracias.
Esta vez, lo he editado para ti.
Lo siento chicos, realmente nuevo para publicar aquí.
Gracias por tu aportación, te lo agradezco mucho.
Lo que implica es que todas las muestras existentes no son precisas. Hay que usar unicode. Como soy muy nuevo en la programación de DLLs empecé desde cero hace poco, así que me basé mucho en los ejemplos dados. Además, resulta que empecé a usar la compilación 600 al mismo tiempo.
Si has estado haciendo esto durante mucho tiempo, me imagino que eres completamente consciente de la situación. Yo, por desgracia, no lo estoy, sólo recibo retazos de información y consejos en este foro.
Pido disculpas por mi ignorancia.
saludos y gracias
Si alguien tiene alguna sugerencia sobre qué hacer mejor por favor hágamelo saber.
Se lo agradezco de nuevo.
Si alguien tiene alguna sugerencia sobre qué hacer mejor por favor hágamelo saber.
Se lo agradezco de nuevo.