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
No soy un mega programador. ¿Pero no entiendo dónde está la universalidad? uchar no puede ser universal porque limita al usuario, a saber: uchar es solo para valores positivos. El valor mínimo es cero, el valor máximo es 255.
Cualquier dato más allá del valor de uchar se hace igual al valor máximo o mínimo de uchar.
En base a lo dicho, pregunté desde el principio "cómo pasar int o double". No te entiendo, jefe.
OK. Hagamos un pequeño recorrido.
1. Tomemos el ejemplo de char y uchar. Ambas variables tienen un tamaño de 1 byte.
Esto significa que al asignar una a la otra no perdemos bytes y por tanto no perdemos el valor del dato original.
mira estas expresiones
Lo mismo ocurre con long/ulong, int/uint.
Es decir, variables de tipo entero del mismo tamaño en bytes pueden pasarse unas a otras sin perder bytes de información.
Por cierto, esto significa que aunque el Asesor Experto acepte números MAGIC en tipo ulong, siempre puedes establecerlos y leerlos en long, es decir, en el formato con signo, en tus programas
2. ahora mira <some_type> y uchar.
Por ejemplo int. Como usted sabe de sizeof(int) tiene un tamaño de 4 bytes. Esto significa que estos 4 bytes en la memoria puede ser fácilmente representado como uchar[4] array
si hay un doble (es de 8 bytes), puede ser representado como uchar[8] array
Esto también se aplica a los bytes de cadenas - en MQL es ushort array.
bien y en consecuencia si usted tiene una estructura de cualquier tipo, puede proporcionar fácilmente cualquier dato como uchar array.
Son estos conceptos básicos sobre bytes que se utilizan en la versión MQL5 - archivos virtuales en memoria CFastFile. Almacena cualquier dato en la memoria uchar array.
Es decir, si no necesitas intercambiar datos con programas externos. O recibe datos de otro programa en forma de un flujo de datos - por ejemplo, la lectura de páginas de Internet, y estos datos no es necesario guardar todo en el disco, entonces es mejor utilizar CFastFile en lugar de la asignación de Windows.
Y por último, para consolidar completamente https://www.mql5.com/es/articles/364.
MT5 642 Win7 64 no funciona, según tengo entendido, después de
hmem=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,size+HEAD_MEM,path); // crear objeto de memoria
Me da error 1400,
pero en Vista 32 funciona.
es debido a los diferentes tamaños de puntero en 32 y 64 sistemas
este archivo de libreria esta hecho para una terminal de 32 bits.
pero si usas un terminal de 64 bits, debes poner tipo long de 8 bytes en todos los lugares donde se implique un puntero (por ejemplo PBYTE, LPVOID, etc., y en todos los tipos memcpy).
pero como me conecto
Da
y estos dos inludes funcionan uno sin el otro.
pero como me conecto
Da
y estas dos inclusiones funcionan una sin la otra.
intente utilizar la resolución contextual ::
Gracias
Sólo tuve que modificar la biblioteca estándar.
No creo que eso sea bueno....Gracias.
Sólo tuve que modificar la biblioteca estándar.
No creo que eso sea bueno.No lo entiendes.
Te hablé de kernel32::GetLastError. Mira cómo está implementado en mi código.
Si no te satisface esta opción, entonces declara import from kernel32 GetLastError por ejemplo con parámetro int. no habrá diferencia al llamarlo, pero evitarás conflictos.
no lo entiendes.
Te he hablado de kernel32::GetLastError, mira como está implementado en mi código.
Si esta opción no te conviene, entonces declara import from kernel32 GetLastError por ejemplo con parámetro int. no habrá diferencia al llamarlo, pero evitarás conflicto.
Tal vez no lo estoy diciendo correctamente.
pero tenemos que
porque aquí tienes un ejemplo de tu código con la librería estándar adjunta.
Al compilar da los mismos errores.
olyakish, vuelve a leer atentamente lo que te he escrito.
Si no te satisface el contexto, te digo exactamente lo que quiero decir.
no lo entiendes.
Te he hablado de kernel32::GetLastError, mira como está implementado en mi código.
Si esta opción no te conviene, entonces declara import from kernel32 GetLastError por ejemplo con parámetro int. no habrá diferencia al llamarlo, pero evitarás conflictos.
Al llamar a kernel32::GetLastError con su contexto en el código , el compilador llamará a GetLastError sin contexto.
Los programadores sólo tienen que hacer una regla para llamar MQL-análogos de las funciones WinAPI estándar con el contexto. Entonces no habrá problemas con la modificación posterior.
Y así arreglas la biblia estándar y se actualizará, por lo que tienes que editarla de nuevo.
Y así arreglas el bíblico estándar y se actualizará, de nuevo tienes que editarlo.