Discusión sobre "Cómo escribir una DLL para MQL5 e intercambiar datos en 10 minutos". - página 6
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
Utilizarwchar_t en lugar de char
El problema radica en el propio mql.
¿Qué tipo de código es este? Copiar un puntero es simplemente copiar 4 bytes de memoria que contienen la dirección.
En este caso, memcpy puede ayudarte, si te encargas de la asignación del buffer necesario en la línea de recepción de antemano (en el programa MQL5).
¿Qué tipo de código es este? Copiar un puntero es simplemente copiar 4 bytes de memoria que contienen la dirección.
En este caso, memcpy puede ayudarte, si te encargas de la asignación del buffer necesario en la línea de recepción (en el programa MQL5).
¿Qué tiene que ver el puntero con esto? Este código funciona perfectamente en mql4. No después de la migración a mql5.
Todo el mundo aquí está dando consejos, pero me gustaría que uno mostrara un ejemplo realmente bueno de cómo pasar la cadena de mql5 a la función dll.
...
Pregunta
¿Cuál es el problema? ¿Cómo pasar humanamente una cadena de MQL a dll?
1) Gracias por su mensaje. El error ha sido corregido. Por favor, espere una actualización.
2) Te han dicho correctamente lo de wchar _t - las cadenas en MQL5 son Unicode.
3) ¿A qué te refieres con "Al comprobar en la depuración visual"?
4) Esta es la forma correcta de utilizarlo:
Gracias por ayudar a los programadores con dificultades como yo. :) Su ejemplo ha aportado algo de claridad a mi situación.
He decidido escribir (o el octavo, que puede necesitarlo) función para convertir la cadena de wchar_t a la buena vieja char. Esta función puede ser útil para aquellos cuyos proyectos tienen mucho código que utiliza el tipo char. Y como MQL5 pasa sólo wchar_t, es más fácil convertir en la entrada que reescribir la mitad del código dll.
Gracias por ayudar a los programadores con dificultades como yo. :) Su ejemplo ha aportado algo de claridad a mi situación.
He decidido escribir la función para convertir una cadena de wchar_t a un viejo char. Esta función puede ser útil para aquellos cuyos proyectos tienen mucho código que utiliza el tipo char. Y como MQL5 pasa sólo wchar_t, es más fácil convertir en la entrada que reescribir la mitad del código dll.
Las funciones DLL que aceptan cadenas como char *, por supuesto, toman un puntero al primer elemento del array de tipo char. Esto significa que cuando se describe la importación de tales funciones en el programa MQL5, debemos utilizar la matriz char como parámetro de cadena.
Para estos casos, hemos proporcionado la función StringToCharArray que convierte correctamente las cadenas en el alfabeto nacional. La función wcstombs no siempre lo hace correctamente.
El artículo es interesante y útil.
1) El hecho de que se incluya el código fuente es genial. Je, pero ¿dónde está la DLL compilada? Obviamente, no es un problema para que un Megaproger la cree.
Pero, ¿y si no soy un Mega y no soy un Proger? :)
2) El artículo utiliza el compilador de MS. No soy amigo de ella:) Tengo BC++. ¿Puedo publicar el código fuente ajustado a él?
(En mi opinión, probablemente, siempre es mejor poner las fuentes de MS y BC, son dos empresas líderes, pero sus estilos de escritura son diferentes).
Intentamos no publicar código potencialmente peligroso (DLL) para no poner nerviosos a los usuarios. Además, esto es sólo un ejemplo de prueba.
Lamentablemente, no tengo a mano el compilador Borland C++. Intenta adaptarlo tú mismo, es menos de una página de código.
yu-sha:
¿No están los promotores poniendo las miras demasiado altas?
¿Y por qué reinventar la rueda cuando todo se ha hecho ya hace mucho tiempo (C, Delphi, ...)?
No hay que hacer lo que parece correcto, sino lo que es beneficioso. Porque la rentabilidad es lo correcto. Y en este caso (MT5+MQL5+servicios) - un enorme beneficio (será devuelto decenas o cientos de veces) para MetaQuotes y un enorme beneficio para los traders. Pero no de inmediato.
Siempre es una buena idea mirar a lo ancho y a lo largo de al menos 5 años. MetaQuotes ha hecho precisamente eso.