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
lib no se vincula a secciones, porque teóricamente el código puede ejecutarse en diferentes procesos.
Para controlarlo, utiliza su variante o https://www.mql5.com/es/code/1835 por ejemplo.
¿Entendí correctamente que si el mutex es nombrado, puedo obtener su handle desde cualquier proceso, no solo desde metatrader?
Pregunta para el autor.
Yo uso la clase en mt4. Si apago y enciendo el terminal, todo deja de funcionar. La salida no es muy conveniente para eliminar Asesores Expertos antes de apagar y adjuntarlos después de encender el terminal. Hay alguna forma de eludir este problema.
Y la segunda. No puedo leer el mapeo de archivos creado por un programa escrito en Delphi. Cuáles pueden ser los matices.
Brevemente, se trata de paneles de negociación que funcionan en muchos terminales.
Si apagas y enciendes el terminal, todo deja de funcionar. La salida no es muy conveniente para eliminar EAs antes de apagar y adjuntarlos después de encender el terminal. ¿Hay alguna manera de solucionar este problema?
Es necesario registrar y ver lo que sucede con los archivos durante dicha desinicialización. no hay ningún bloqueo.
No puedo leer la asignación de archivos
¿qué función de winapi se entiende por "leer"?
Es necesario registrar y ver qué ocurre con los archivos durante dicha desinicialización. no hay bloqueos.
¿a qué función de winapi se refiere "leer"?
El caso es que la función
siempre devuelve 0.
Por eso no puedo entender si el fichero está abierto.
En la imagen de arriba está el log del Expert Advisor abriendo un mapeo de fichero que aún no se ha creado. Y no hay errores.
Quizás la función
CMemMapFile::Opendebería insertarse no en int OnInit(), sino en algún sitio más adelante, por ejemplo, en OnTick(), pero como el handle devuelto es siempre 0, no hay posibilidad de hacer una comprobación para evitar abrir el fichero constantemente con cada tick.
Y sobre la segunda pregunta.
En Delphi creo una aplicación que crea un mapeo de ficheros. Al conectarla se producen errores. A saber No se pasan correctamente los números. Empecé a alinear con {$Align Off}
Obtuve otros errores como Access violation read to 0x04E91000 in 'msvcrt.dll'.
Ahora los datos se alinean normalmente por 19 bytes - "00:35:50.260 Panel v 1.00 GBPUSD.m,M5: OnInitsizeof(PipeData)= 19".
pero al leer todos los datos son cero.
La cuestión es que la función
siempre devuelve 0.
Por eso no puedo entender si el fichero está abierto.
Así es, CMemMapFile::Open devuelve un código de error o 0 cuando no hay error.
(a diferencia de CMemMapApi:, que devolverá un handle abierto y escribirá el error en el parámetro pasado).
Y el handle está en m_hmem.
En delphi, creas una aplicación que crea un mapeo de ficheros. Al conectarla, se producen errores. A saber Números no pasados correctamente.
¿tiene en cuenta los bytes DWORD reservados al principio del fichero?¿4 bytes? Lo probaré, no lo he contado.
mira como se escribe o se crea el archivo en la fuente.
en el parámetro m_size
es correcto, CMemMapFile::Open devuelve un código de error o 0 cuando no hay error.
(a diferencia de CMemMapApi:, que devolverá un handle abierto y escribirá el error en el parámetro pasado).
Y el handle está en m_hmem.
Tiene en cuenta los bytes DWORD reservados al principio del fichero ?es m_hmem al abrir una asignación de archivo inexistente. ¿Cómo determinar si se trata de un error o de un handle?
es m_hmem al abrir una asignación de archivo inexistente. ¿Cómo determinar si es un error o un handle?