Intercambio de datos entre dos EAs que se ejecutan en diferentes terminales - página 8

 
zhuki >>:

В личке

Gracias.

 
Este no es el código fuente, ni es una DLL. Este es un encabezado de fuente DLL enmarcado que tomó más de una semana para escribir. Se tardó una semana en escribir la clase para el mapeo. Sobre todo para pensar en la estructuración.
Y se necesitaron 60 minutos para escribir 60 funciones. Hay un par de líneas en cada función.

//| FUNCIONES GENERALES.

//| 1. La función crea o abre una asignación de archivos por descriptor de archivo de usuario y/o nombre de la asignación de archivos con la posibilidad de |
//| cambio preliminar del tamaño de la memoria asignada para ello. Si no existe ninguna asignación de archivos, se crea una.
La función //| devuelve el descriptor del sistema de mapeo de archivos si tiene éxito, en caso contrario NULL.
//| HANDLE FileMappingCreate(const int hFileUser, // //descriptor del sistema de archivos del usuario.
//| const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nBytes); // Cantidad de memoria a reservar para la asignación de archivos.

//| 2. La función abre la asignación de archivos. La función devuelve un descriptor del sistema de mapeo de archivos si tiene éxito, en caso contrario NULL.
//| HANDLE FileMappingOpen(const char *szNameFileMapping); //Nombre del archivo que se proyecta.

//| 3. La función borra la asignación de archivos por su nombre.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores; |
//| -1 dirección inicial no recibida;
//| -2 memoria no despejada;
//| -3 fallo en el mapeo de archivos.
//| int FileMappingClear(const char *szNameFileMapping); // nombre del mapeo de archivos.

//| 4. La función cierra la asignación de archivos por su nombre. La función devuelve TRUE si tiene éxito, en caso contrario FALSE.
//| bool FileMappingClose(const char *szNameFileMapping); //Nombre de la asignación de archivos.

A //| FUNCIÓN GENÉRICA PARA ACCEDER A LA REPRESENTACIÓN DE MAPEO DEL ARCHIVO PROYECTADO EN EL ESPACIO DE DIRECCIONES DEL PROCESO QUE LLAMA.

//| 5. La función crea un mapeo de archivo por el descriptor de archivo del usuario y/o el nombre del mapeo de archivo con la capacidad de cambiar el
//| tamaño de la memoria asignada para ello por adelantado y mapea la representación del archivo proyectada en el espacio de direcciones del proceso que llama.
La función //| devuelve un puntero al primer byte del área de memoria de mapeo si tiene éxito, en caso contrario NULL.
//| char *FileMappingCreateViewOfFile(const int hFileUser, /// El descriptor del sistema del archivo de usuario.
//| const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nBytes); // Cantidad de memoria a reservar para la asignación de archivos.

//| 6. La función abre el mapeo del archivo por su nombre y mapea la representación del archivo proyectado en el espacio de direcciones del proceso que llama.
//| La función devuelve un puntero al primer byte del área de memoria de mapeo de la representación del archivo proyectado si tiene éxito, en caso contrario NULL.
//| char *FileMappingOpenViewOfFile(const char *szNameFileMapping); // Nombre del archivo proyectado.

//| 7. La función mapea la representación del archivo proyectado en el espacio de direcciones del proceso de llamada.
La función //| devuelve TRUE en caso de éxito o FALSE en caso de error.
//| bool FileMappingViewOfFile(const char *pcAddress); // Puntero al primer byte del área de memoria de la representación del archivo proyectado devuelto por
//| // funciones FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| 8. La función cancela la presentación del archivo proyectado en el espacio de direcciones del proceso que llama.
//| La función devuelve TRUE en caso de éxito o FALSE en caso de error.
//| bool FileMappingUnViewOfFile(const char *pcAddress); // Puntero al primer byte del área de memoria de la representación del archivo proyectado,
//| // devuelto por FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| FUNCIONES PARA ESCRIBIR NÚMEROS Y CADENAS EN EL MAPEO DEL ARCHIVO.

//| 9. La función abre una asignación de archivos y escribe en ella un valor BOOL lógico desde el byte especificado en la memoria.
//| Si no existe ninguna asignación de archivos, se crea. La función convierte un número de tipo INT en BOOL para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo en el mapeo del archivo.
//| int FileMappingWriteBoolValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const int nValue); // Valor lógico a escribir en el mapeo del archivo.

//|10. La función abre la asignación de archivos y escribe en ella el número del tipo CHAR del byte especificado en la memoria.
//| Si no existe ninguna asignación de archivos, se crea una. La función convierte un número INT en CHAR para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de datos mayor que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo en el mapeo del archivo.
//| int FileMappingWriteCharValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const int nValue); // Un número entero a escribir en el mapeo del archivo.

//|11. La función abre la asignación de archivos y escribe en ella el número del tipo SHORT del byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una. La función convierte un número INT en SHORT para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de datos mayor que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo en el mapeo del archivo.
//| int FileMappingWriteShortValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const int nValue); // Número entero a escribir en el mapeo del archivo.

//|12. La función abre la asignación de archivos y escribe en ella el número de tipo INT del byte especificado en la memoria.
//| Si no existe ninguna asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores; |
//| -1 la cantidad de datos es mayor que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo en el mapeo de archivos.
//| int FileMappingWriteIntValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const int nValue); // Un número entero a escribir en el mapeo del archivo.

//|13. La función abre el mapeo del archivo y escribe en él un número de tipo FLOAT del byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una. La función convierte un número DOBLE en FLOAT para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de datos mayor que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo de mapeo de archivo.
//| int FileMappingWriteFloatValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const double dValue); // Número de doble precisión a escribir en el mapeo del archivo.

//|14. La función abre una asignación de archivos y escribe en ella el número del tipo DOBLE del byte especificado en la memoria.
//| Si no existe una asignación de archivos, se crea una asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de datos mayor que la memoria asignada;
//| -2 dirección inicial no recibida;
//| -3 valor no escrito en la memoria;
//| -4 fallo en el mapeo del archivo.
//| int FileMappingWriteDoubleValue(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, a partir del cual se escribirá el número.
//| const double dValue); // Número de precisión doble para escribir en el mapeo del archivo.

//|15. La función abre una asignación de archivos y escribe en ella una cadena del byte especificado en la memoria. Si no hay una asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de caracteres a escribir superior a la longitud de la cadena;
//| -2 longitud de la cadena superior a la memoria asignada;
//| -3 dirección de inicio no recibida;
//| -4 valor en memoria no escrito;
//| -5 cancelación de la asignación de archivos fallida.
//| int FileMappingWriteString(const char *szNameFileMapping, //| nombre para el archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, desde donde se escribirá la cadena.
//| const char *szString); // Cadena para escribir en la asignación de archivos.

//| FUNCIONES PARA ESCRIBIR NÚMEROS Y CADENAS EN LA REPRESENTACIÓN DE MAPEO DEL ARCHIVO PROYECTADO EN EL ESPACIO DE DIRECCIONES DEL PROCESO QUE LLAMA.

//|16. La función escribe un valor BOOL lógico desde el byte especificado en la memoria a la asignación de archivos en el espacio de direcciones de inicio del proceso que llama.
//| La función está pensada para ser utilizada en bucles. La función convierte un número de tipo INT en BOOL para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleBoolValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde la que se escribirán los datos.
//| const int nValue); // Valor lógico a escribir en el mapeo del archivo.

//|17. La función escribe el número del tipo CHAR del byte especificado en la memoria en la asignación del archivo por la dirección inicial del espacio de proceso que llama.
//| La función está pensada para ser utilizada en bucles. La función convierte un número INT en CHAR para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de datos mayor que la memoria asignada;
//| -2 valor no escrito en la memoria.
//| int FileMappingWriteSimpleCharValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int nValue); // Valor lógico a escribir en el mapeo del archivo.

//|18. La función escribe un número de tipo SHORT desde el byte especificado en la memoria al archivo mapeado por la dirección inicial del espacio de proceso de llamada.
//| La función está pensada para ser utilizada en bucles. La función convierte un número de tipo INT en SHORT para escribirlo en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleShortValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int nValue); // valor lógico para escribir en la asignación de archivos.

//|19. La función escribe el número de tipo INT del byte especificado en la memoria a la asignación del archivo en la dirección espacial inicial del proceso que llama.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleIntValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int nValue); // Un número entero para escribir en la asignación del archivo.
 
//|20. La función escribe un número de tipo FLOAT en la asignación de archivos en la dirección espacial inicial del proceso que llama desde el byte especificado en la memoria.
//| La función convierte un número DOBLE a FLOAT para escribirlo en la asignación de archivos. La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleFloatValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const double dValue); // número de doble precisión para escribir en el mapeo del archivo.

//|21. La función escribe un número de tipo DOBLE desde el byte especificado en la memoria al archivo mapeado por la dirección espacial inicial del proceso que llama.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleDoubleValue(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const double dValue); // número de doble precisión para escribir en el mapeo del archivo.

//|22. La función escribe una cadena desde el byte especificado en la memoria a la asignación de archivos en la dirección espacial inicial del proceso que llama.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 no se escribe ningún valor en la memoria.
//| int FileMappingWriteSimpleString(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde la que se escribirán los datos.
//| const char *szString); // Una cadena para escribir en la asignación de archivos.

//| FUNCIONES PARA LEER NÚMEROS Y CADENAS DESDE EL MAPEO DEL ARCHIVO.

//|23. La función abre una asignación de archivos y lee de ella un valor BOOL lógico del byte especificado en la memoria.
//| Si la asignación de archivos no existe, se crea. La función devuelve el valor leído o FALSE en caso de error.
//| bool FileMappingReadBoolValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada, desde donde se leerá el número.

//|24. La función abre una asignación de archivos y lee de ella un número de tipo CHAR del byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una. La función devuelve el valor leído, o NULL si hay un error.
//| char FileMappingReadCharValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada de la que se leerá un número.

//|25. La función abre una asignación de archivos y lee de ella un número de tipo SHORT del byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una. La función devuelve el valor leído, o NULL si hay un error.
//| short FileMappingReadShortValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada, de la que se leerá un número.

//|26. La función abre una asignación de archivos y lee de ella el número de tipo INT del byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una. La función devuelve el valor leído o NULL en caso de error.
//| int FileMappingReadIntValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada, de la que se leerá un número.

//|27. La función abre una asignación de archivos y lee el número del tipo FLOAT del byte especificado en la memoria. Si no hay una asignación de archivos, se crea una.
//| La función devuelve el valor leído o NULL en caso de error. La función convierte un número de tipo FLOAT del mapeo de archivos a DOUBLE.
//| double FileMappingReadFloatValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, //Número de memoria reservada para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada, desde donde se leerá el número.

//|28. La función abre una asignación de archivos y lee de ella un número de tipo DOBLE del byte especificado en la memoria.
//| Si no existe ninguna asignación de archivos, se crea una. La función devuelve el valor leído o NULL en caso de error.
//| double FileMappingReadDoubleValue(const char *szNameFileMapping, //Nombre del archivo que se proyecta.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte); // Número de bytes desde el principio de la memoria asignada, de la que se leerá un número.

//|29. La función abre el mapeo del archivo y lee una línea del mismo desde el byte especificado en la memoria. Si no hay una asignación de archivos, se crea una.
//| La función devuelve un puntero al principio de la cadena.
//| En caso de error, la función retorna: "Error_1" la longitud de la cadena es mayor que la memoria asignada;
//| "Error_2" dirección inicial no recibida;
//| "Error_3" mensaje de la memoria no leído;
//| "Error_4" fallo en el mapeo del archivo.
//| char *FileMappingReadString(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada de la que se leerá la cadena.
//| const int nLengthString); // Longitud de la cadena a leer en caracteres (bytes).

//| FUNCIONES PARA LEER NÚMEROS Y CADENAS DESDE LA REPRESENTACIÓN DE ARCHIVOS PROYECTADA EN EL ESPACIO DE DIRECCIONES DEL PROCESO QUE LLAMA.

//|30. La función lee desde la asignación de archivos al espacio de direcciones inicial del proceso que llama un valor BOOL lógico del byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve un valor leído o FALSE en caso de error.
//| bool FileMappingReadSimpleBoolValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|31. La función abre el mapeo del archivo y lee de él el número del tipo CHAR del byte indicado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve un valor leído o NULL en caso de error.
//| char FileMappingReadSimpleCharValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|32. La función abre el mapeo del archivo y lee de él el número del tipo SHORT del byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve un valor leído o NULL en caso de error.
//| short FileMappingReadSimpleShortValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|33. La función abre el mapeo del archivo y lee de él el número de tipo INT del byte indicado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve el valor leído o NULL en caso de error.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|33. La función abre el mapeo del archivo y lee de él el número de tipo INT del byte indicado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve el valor leído o NULL en caso de error.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|34. La función abre el mapeo del archivo y lee de él el número del tipo FLOAT del byte indicado en la memoria. La función está pensada para ser utilizada en bucles.
//| La función devuelve el valor leído o NULL en caso de error. La función convierte un número del tipo FLOAT de la asignación de archivos a DOUBLE.
//| double FileMappingReadSimpleFloatValue(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se escribirán los datos.

//|35. La función abre el mapeo del archivo y lee de él el número del tipo DOBLE del byte indicado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función devuelve un valor leído o NULL en caso de error.
//| double FileMappingReadSimpleDoubleValue(const char *pcAddress); // Puntero a la zona de memoria de bytes de la representación del archivo proyectada,
//| // desde la que se escribirán los datos.

//|36. La función abre el mapeo del archivo y lee una línea del mismo desde el byte indicado en la memoria. La función está pensada para ser utilizada en bucles.
//| La función devuelve un puntero al principio de la cadena.
//| En caso de error, la función retorna: "Error_1" la longitud de la cadena excede la memoria asignada;
//| "Error_2" el mensaje de la memoria no se lee;
//| char *FileMappingReadSimpleString(const char *pcAddress); // Puntero al byte de la zona de memoria de la representación del archivo proyectado,
//| // desde el que se realizará la grabación de datos.

//| FUNCIÓN PARA ESCRIBIR ARRAYS EN EL MAPEO DE ARCHIVOS.

//|37 La función abre un mapeo de archivo y escribe en él un array con datos de tipo BOOL desde el byte especificado en memoria.
//| Si no hay asignación de archivos, se crea una. La función convierte los datos de la matriz INT en BOOL para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en memoria;
//| -5 fallo en el mapeo de archivos.
//| int FileMappingWriteBoolArray(const char *szNameFileMapping, //Nombre para el mapeo de archivos.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, desde donde se escribirá el array.
//| const int *aiArray, // Puntero a la matriz con los datos lógicos BOOL que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|38. La función abre una asignación de archivos y escribe en ella una matriz con datos de tipo CHAR del byte especificado en la memoria.
Si //| no hay asignación de archivos, se crea una. La función convierte los datos de la matriz INT en CHAR para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en memoria;
//| -5 fallo en el mapeo de archivos.
//| int FileMappingWriteCharArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, desde donde se escribirá el array.
//| const int *aiArray, // Puntero a la matriz con datos de tipo CHAR que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|39. La función abre una asignación de archivos y escribe en ella una matriz con datos de tipo SHORT del byte especificado en la memoria.
Si //| no hay asignación de archivos, se crea una. La función convierte los datos de la matriz INT en SHORT para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en memoria;
//| -5 fallo en el mapeo de archivos.
//| int FileMappingWriteShortArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, desde donde se escribirá el array.
//| const int *aiArray, // Puntero a la matriz con datos de tipo SHORT que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.
 
//|40. La función abre una asignación de archivos y escribe en ella un array con datos de tipo INT del byte especificado en memoria.
Si //| no hay asignación de archivos, se crea.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en la memoria;
//| -5 cancelación del mapeo del archivo falló.
//| int FileMappingWriteIntArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada, desde donde se escribirá el array.
//| const int *aiArray, // Puntero a la matriz con datos de tipo INT que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|41. La función abre el mapeo del archivo y escribe en él un array con datos de tipo FLOAT desde el byte especificado en la memoria.
Si //| no hay asignación de archivos, se crea una. La función convierte los datos de la matriz DOUBLE a FLOAT para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en memoria;
//| -5 fallo en el mapeo de archivos.
//| int FileMappingWriteFloatArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada, //desde donde se escribirá el array.
//| const double *adArray, // Puntero a la matriz con datos de tipo FLOAT que se escribirán en el mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|42. La función abre una asignación de archivos y escribe en ella un array con datos de tipo DOBLE del byte especificado en la memoria.
Si //| No hay asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 dirección inicial no recibida;
//| -4 array no escrito en la memoria;
//| -5 cancelación del mapeo del archivo falló.
//| int FileMappingWriteDoubleArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada, //desde donde se escribirá el array.
//| const double *adArray, // Puntero a la matriz con datos de tipo DOBLE que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//| FUNCIONES PARA ESCRIBIR MATRICES EN LA REPRESENTACIÓN DE MAPEO DEL ARCHIVO PROYECTADO EN EL ESPACIO DE DIRECCIONES DEL PROCESO QUE LLAMA.

//|43. La función escribe un array con datos de tipo BOOL desde el byte especificado en la memoria en la asignación de archivos por el espacio de direcciones inicial del proceso que llama.
//| La función está pensada para ser utilizada en bucles. La función convierte los datos de la matriz INT en BOOL para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 array no escrito en memoria.
//| int FileMappingWriteSimpleBoolArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int *aiArray, // Puntero a la matriz con los datos lógicos BOOL que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|44. La función escribe un array con datos de tipo BOOL desde el byte especificado en la memoria al archivo mapeado por la dirección espacial inicial del proceso llamante.
//| La función está pensada para ser utilizada en bucles. La función convierte los datos de la matriz INT en CHAR para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 array no escrito en memoria.
//| int FileMappingWriteSimpleCharArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int *aiArray, // Puntero a la matriz con datos de tipo CHAR que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|45. La función escribe un array con datos de tipo BOOL desde el byte especificado en la memoria en la asignación de archivos por la dirección espacial inicial del proceso que llama.
//| La función está pensada para ser utilizada en bucles. La función convierte los datos de la matriz INT en SHORT para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir sobre el tamaño del array;
//| -2 número de datos sobre la memoria asignada;
//| -3 array no escrito en memoria.
//| int FileMappingWriteSimpleShortArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int *aiArray, // Puntero a la matriz con datos de tipo SHORT que se escribirán en la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|46. La función escribe un array con datos de tipo INT desde el byte especificado en la memoria en el mapeo del archivo en la dirección inicial del espacio de proceso que llama. |
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 ningún array se escribe en la memoria.
//| int FileMappingWriteSimpleIntArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const int *aiArray, // Puntero a la matriz con los datos de tipo INT que se escribirán en la asignación del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|47. La función escribe un array con datos de tipo FLOAT en la asignación de archivos desde el byte especificado en la memoria por la dirección inicial del espacio de proceso de llamada.
//| La función está pensada para ser utilizada en bucles. La función convierte los datos de la matriz DOUBLE en FLOAT para escribirlos en la asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 ningún array se escribe en la memoria.
//| int FileMappingWriteSimpleFloatArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const double *adArray, // Puntero a la matriz con datos de tipo FLOAT que se escribirán en el mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|48. La función escribe un array con datos del tipo DOUBLE desde el byte especificado en la memoria al archivo mapeado por la dirección espacial inicial del proceso llamante.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 número de celdas a escribir más que el tamaño del array;
//| -2 número de datos más que la memoria asignada;
//| -3 array no escrito en memoria.
//| int FileMappingWriteSimpleDoubleArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| const double *adArray, // Puntero a la matriz con datos de tipo DOUBLE que se escribirán en el mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//| FUNCIONES PARA LEER ARRAYS DESDE EL MAPEO DE ARCHIVOS.

//|49. La función abre un mapeo de archivo y lee de él datos del tipo BOOL en un array desde el byte especificado en la memoria.
//| Si no existe una asignación de archivos, se crea una asignación de archivos.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 la dirección de inicio no se recibe;
//| -4 el mensaje de la memoria no se lee;
//| -5 cancelar el mapeo del archivo falló.
//| int FileMappingReadBoolArray(const char *szNameFileMapping, //| nombre del archivo que se mapea.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada desde donde se escribirá el array.
//| int *aiArray, // Puntero a la matriz para leer los datos BOOL lógicos del mapeo de archivos en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.
 
//|50. La función abre un mapeo de archivo y lee los datos de tipo CHAR del mismo en un array a partir del byte especificado en la memoria.
Si //| no hay asignación de archivos, se crea.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 la dirección de inicio no se recibe;
//| -4 el mensaje de la memoria no se lee;
//| -5 cancelar el mapeo del archivo falló.
//| int FileMappingReadCharArray(const char *szNameFileMapping, //| Nombre del archivo que se mapea.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada desde donde se escribirá el array.
//| int *aiArray, // Puntero a la matriz para la lectura de datos de tipo CHAR desde la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|51. La función abre el mapa del archivo y lee datos del tipo SHORT en el array desde el byte especificado en la memoria.
Si //| No hay asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 la dirección de inicio no se recibe;
//| -4 el mensaje de la memoria no se lee;
//| -5 cancela el mapeo del archivo falló.
//| int FileMappingReadShortArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada desde donde se escribirá el array.
//| int *aiArray, // Puntero a la matriz para la lectura de los datos SHORT del mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|52. La función abre el mapa del archivo y lee los datos de tipo INT del mismo en el array desde el byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 la dirección de inicio no se recibe;
//| -4 el mensaje de la memoria no se lee;
//| -5 cancelar el mapeo del archivo falló.
//| int FileMappingReadIntArray(const char *szNameFileMapping, //| nombre del archivo que se mapea.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte, //Número de bytes desde el principio de la memoria asignada desde donde se escribirá el array.
//| int *aiArray, // Puntero a la matriz para leer los datos de tipo INT del mapeo de archivos en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|53. La función abre un mapeo de archivo y lee datos de tipo FLOAT en el array desde el byte especificado en la memoria.
Si //| no hay asignación de archivos, se crea una. La función convierte los datos de tipo FLOAT del mapeo del archivo a DOUBLE para su lectura en el array.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 no se ha recibido ninguna dirección de inicio;
//| -4 mensaje de la memoria no leído;
//| -5 ha fallado el mapeo de archivos de deshacer.
//| int FileMappingReadFloatArray(const char *szNameFileMapping, //Nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria reservada para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, // desde la que se escribirá el array.
//| double *adArray, // Puntero a la matriz para la lectura de datos de tipo FLOAT desde el mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|54. La función abre un mapeo de archivo y lee datos de tipo DOBLE de él en un array desde el byte especificado en la memoria.
//| Si no hay asignación de archivos, se crea una.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del búfer de recepción no es suficiente;
//| -3 la dirección de inicio no se recibe;
//| -4 el mensaje de la memoria no se lee;
//| -5 cancelar el mapeo del archivo falló.
//| int FileMappingReadDoubleArray(const char *szNameFileMapping, //| nombre del archivo proyectado.
//| const int nMemorySize, // Cantidad de memoria a reservar para la asignación de archivos.
//| const int nStartByte, // Número de bytes desde el principio de la memoria asignada, // desde la que se escribirá el array.
//| double *adArray, // Puntero a la matriz para la lectura de los datos DOUBLE del mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//| FUNCIÓN PARA LEER ARRAYS EN LA REPRESENTACIÓN DE MAPEO DEL ARCHIVO PROYECTADO EN EL ESPACIO DE DIRECCIONES DEL PROCESO QUE LLAMA.

//|55. La función lee datos de tipo BOOL del archivo mapeado por el espacio de direcciones inicial del proceso llamante en un array desde el byte especificado en memoria.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 mensaje de la memoria no leído.
//| int FileMappingReadSimpleBoolArray(const char *pcAddress, // Puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde la que se escribirán los datos.
//| int *aiArray, // Puntero a la matriz para leer los datos lógicos BOOL en ella desde el mapeo del archivo.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|56. La función lee datos de tipo CHAR del archivo mapeado por la dirección inicial del espacio del proceso que llama en un array desde el byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 el mensaje de la memoria no se lee.
//| int FileMappingReadSimpleCharArray(const char *pcAddress, // Puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| int *aiArray, // Puntero a la matriz para la lectura de datos de tipo CHAR de la asignación de archivos.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|57. La función lee datos de tipo SHORT del archivo mapeado por la dirección inicial del espacio del proceso que llama en el array desde el byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 el mensaje de la memoria no se lee.
//| int FileMappingReadSimpleShortArray(const char *pcAddress, // Puntero a byte del área de memoria de la representación del archivo proyectado,
//| // desde donde se escribirán los datos.
//| int *aiArray, // Puntero a la matriz para leer los datos SHORT de la asignación de archivos en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|58. La función lee datos de tipo INT del archivo mapeado por la dirección espacial inicial del proceso que llama en el array desde el byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 el mensaje de la memoria no se lee.
//| int FileMappingReadSimpleIntArray(const char *pcAddress, // Puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde la que se escribirán los datos.
//| int *aiArray, // Puntero a la matriz para leer los datos de tipo INT del mapeo del archivo en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|59. La función lee datos de tipo FLOAT del archivo mapeado por la dirección inicial del espacio del proceso de llamada en el array desde el byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles. La función convierte los datos de tipo FLOAT del mapeo del archivo en DOUBLE para su lectura en un array.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 mensaje de la memoria no leído.
//| int FileMappingReadSimpleFloatArray(const char *pcAddress, //| puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| double *adArray, // puntero a la matriz para leer los datos de tipo FLOAT del mapeo del archivo en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.

//|60. La función lee datos de tipo DOBLE del archivo mapeado por la dirección espacial inicial del proceso que llama en el array desde el byte especificado en la memoria.
//| La función está pensada para ser utilizada en bucles.
//| La función devuelve: 1 finalización con éxito;
//| 0 otros errores;
//| -1 más datos que la memoria asignada;
//| -2 el tamaño del buffer de recepción no es suficiente;
//| -3 mensaje de la memoria no leído.
//| int FileMappingReadSimpleDoubleArray(const char *pcAddress, // puntero al byte de la zona de memoria de la representación del archivo proyectada,
//| // desde donde se escribirán los datos.
//| double *adArray, // puntero a la matriz para leer los datos de tipo DOUBLE del mapeo del archivo en ella.
//| const int nSizeBuffer); // Tamaño de la matriz.
 
Zhunko >>:
Это не исходник, и не DLL. Это офрмленный заголовок исходника DLL, на который потратил больше недели. Написание класса для маппинга заняло неделю. В основном на продумывание структурированности.
А само писание 60 функций заняло 60 минут. Там в каждой функции по паре строчек.
Es una biblioteca muy bonita. ¿No puedes compartir los archivos terminados? ¿O implica un pago?
 
Andrei01 >>:
Очень приятная библиотечка. А файлами готовыми Вы не можете поделиться? Или это подразумевает оплату?

Todavía no ha terminado. Todo está en proceso. Estoy corrigiendo errores en la descripción y editando los nombres de las funciones, son demasiado largos para MQL4.
Las pruebas están muy lejos. La biblioteca está pensada para trabajar con mi Caja de Herramientas y, por tanto, está protegida. No le daré el código fuente.
Si quieres, puedes alquilarlo. :-))
Pero, al fin y al cabo, lo más valioso que has expuesto. Esta descripción es más importante que el código fuente.

 
3/4 probado. Se ha descubierto que necesitamos añadir 16 funciones más para los enteros sin signo, excepto INT.
Por el momento, el archivo de cabecera tiene el siguiente aspecto:
Archivos adjuntos:
 
Terminado. 80 funciones ahora. Ponlo en la hucha. Probablemente aparecerá pronto.
El archivo de cabecera es ahora así:
Archivos adjuntos:
 
Zhunko: Всё-таки, общение через файлы это не тот инструмент. Не по назначению.
Файлы придуманы для длительного хранения информации. Зачем терзать диск? Для общения есть ОЗУ.

Si se crea un disco en RAM (RAMdisk), el disco duro no sufrirá y la oferta de JavaDev tiene cierto sentido.

Y para la biblioteca - ¡¡¡muchas gracias!!! ¡Sólo una obra maestra!