Troca de dados entre dois EAs funcionando em terminais diferentes - página 8

 
zhuki >>:

В личке

Obrigado.

 
Este não é o código fonte, nem é uma DLL. Este é um cabeçalho emoldurado de uma DLL de fonte que levou mais de uma semana para ser escrita. Levou uma semana para escrever a classe para o mapeamento. Principalmente para pensar sobre a estruturação.
E demorou 60 minutos para escrever 60 funções. Há um par de linhas em cada função.

//| FUNÇÕES GERAIS.

//| 1. a função cria ou abre um mapeamento de arquivo por descritor de arquivo de usuário e/ou nome do mapeamento de arquivo com a possibilidade de |
//| mudança preliminar de tamanho da memória alocada para ele. Se não existir nenhum mapeamento de arquivo, um é criado.
A função //| devolve o descritor do sistema de mapeamento de arquivos se bem-sucedido, caso contrário NULL.
//| HANDLE FileMappingCreate(const int hFileUser, // // descritor de sistema de arquivo de usuário.
//| const char *szNameFileMapping, //Nome para arquivo projetado.
/// const const int nBytes); // Quantidade de memória a ser reservada para o mapeamento de arquivos.

//| 2. A função abre o mapeamento do arquivo. A função retorna um descritor de sistema de mapeamento de arquivos, se bem-sucedido, caso contrário NULL.
//| HANDLE FileMappingOpen(const char *szNameFileMapping); //Nome do arquivo que está sendo projetado.

//| 3. A função limpa o mapeamento do arquivo por seu nome.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros; |
//| -1 endereço inicial não recebido;
//| -2 memória não limpa;
//| -3 falha no mapeamento de arquivos.
//| int FileMappingClear(const char *szNameFileMapping); // nome do mapeamento de arquivos.

//| 4. A função fecha o mapeamento do arquivo pelo seu nome. A função retorna VERDADEIRA se for bem sucedida, caso contrário FALSA.
//| bool FileMappingClose(const char *szNameFileMapping); //Nome do arquivo de mapeamento.

A //| FUNÇÃO GENÉRICA PARA ACESSAR A REPRESENTAÇÃO DO ARQUIVO DE MAPEAMENTO DO ARQUIVO PROJETADO NO ESPAÇO DE ENDEREÇOS DO PROCESSO DE CHAMADA.

//| 5. A função cria um mapeamento de arquivo pelo descritor de arquivo do usuário e/ou nome de mapeamento de arquivo com a capacidade de alterar o tamanho
//| da memória alocada para ele com antecedência e mapeia a representação do arquivo projetado no espaço de endereço do processo de chamada.
A função //| devolve um ponteiro para o primeiro byte da área de memória de mapeamento, caso contrário, NULL.
//| char *FileMappingCreateViewOfFile(const int hFileUser, // // O descritor de sistema do arquivo do usuário.
//| const char *szNameFileMapping, //Nome para arquivo projetado.
/// const const int nBytes); // Quantidade de memória a ser reservada para o mapeamento de arquivos.

//| 6. A função abre o mapeamento do arquivo pelo seu nome e mapeia a representação do arquivo projetado no espaço de endereços do processo de chamada.
//| A função retorna um ponteiro para o primeiro byte da área de memória de mapeamento da representação do arquivo projetado, caso contrário, NULL.
//| char *FileMappingOpenViewOfFile(const char *szNameFileMapping); // Nome para o arquivo projetado.

//| 7. A função mapeia a representação do arquivo projetado para o espaço de endereços do processo de chamada.
A função //| devolve VERDADEIRO no sucesso ou FALSO no erro.
//| bool FileMappingViewOfFile(const char *pcAddress); // Ponteiro para o primeiro byte da área de memória da representação do arquivo projetado retornado por
//| // funções FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| 8. A função cancela a apresentação do arquivo projetado no espaço de endereços do processo de chamada.
//| A função retorna VERDADEIRO sobre o sucesso ou FALSO sobre o erro.
//| bool FileMappingUnViewOfFile(const char *pcAddress); // Pointer to the first byte of the memory area of the projected file representation,
//| // retornado por FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| FUNÇÕES PARA ESCREVER NÚMEROS E FORÇAS AO MAPA DE ARQUIVO.

//| 9. A função abre um mapeamento de arquivo e grava um valor lógico BOOL para ele a partir do byte especificado na memória.
//| Se não existir nenhum mapeamento de arquivo, ele é criado. A função converte um número do tipo INT para BOOL para escrever no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivo.
//| int FileMappingWriteBoolValue(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const int nValue); // Valor lógico a ser escrito no mapeamento do arquivo.

//|10. A função abre o mapeamento do arquivo e escreve o número do tipo CHAR a partir do byte especificado na memória.
//| Se não existir nenhum mapeamento de arquivo, um é criado. A função converte um número INT para CHAR para escrever no arquivo de mapeamento.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de dados maior que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivo.
//| int FileMappingWriteCharValue(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const int nValue); // Um número inteiro a ser escrito no mapeamento do arquivo.

//|11. A função abre o mapeamento do arquivo e grava o número do tipo CURTO do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função converte um número INT para SHORT para escrever no arquivo de mapeamento.
//| retornos de função: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de dados maior que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivo.
//| int FileMappingWriteShortValue(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const int nValue); // Número inteiro a ser escrito no mapeamento de arquivos.

//|12. A função abre o mapeamento do arquivo e grava o número do tipo INT a partir do byte especificado na memória.
//| Se não existir nenhum mapeamento de arquivo, um é criado.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros; |
//| -1 quantidade de dados é maior que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivos.
//| int FileMappingWriteIntValue(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const int nValue); // Um número inteiro a ser escrito no mapeamento do arquivo.

//|13. A função abre o mapeamento do arquivo e grava nele um número do tipo FLOAT do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função converte um número DOUBLE para FLOAT para escrever no mapeamento do arquivo.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de dados maior que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivo.
//| int FileMappingWriteFloatValue(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const double dValue); // Número de dupla precisão a ser escrito no mapeamento do arquivo.

//|14. A função abre um mapeamento de arquivo e escreve o número do tipo DOUBLE a partir do byte especificado na memória.
//| Se não existir um mapeamento de arquivo, é criado um mapeamento de arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 endereço inicial não recebido;
//| -3 valor não gravado na memória;
//| -4 falha no mapeamento de arquivo.
//| int FileMappingWriteDoubleValue(const char *szNameFileMapping, //Nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual o número será escrito.
//| const double dValue); // Número de precisão dupla para escrever em arquivo de mapeamento.

//|15. A função abre um mapeamento de arquivo e grava nele uma cadeia do byte especificado na memória. Se não houver um mapeamento de arquivo, é criado um.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de caracteres para escrever mais do que o comprimento da string;
//| -2 comprimento da string mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 valor na memória não escrito;
//| -5 cancelamento do mapeamento de arquivo falhou.
//| int FileMappingWriteString(const char *szNameFileMapping, //| nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual a cadeia será escrita.
//| const char *szString); // String para escrever em arquivo de mapeamento.

//| FUNÇÕES PARA ESCREVER NÚMEROS E STRINGS NO ARQUIVO DE REPRESENTAÇÃO DO ARQUIVO PROJETADO NO ESPAÇO DE ENDEREÇOS DO PROCESSO DE CHAMADA.

//|16. A função grava um valor lógico BOOL do byte especificado na memória para o mapeamento do arquivo no espaço de endereço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte um número do tipo INT para BOOL para escrever no arquivo de mapeamento.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 nenhum valor é gravado na memória.
//| int FileMappingWriteSimpleBoolValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int nValue); // Valor lógico para escrever no mapeamento do arquivo.

//|17. A função escreve o número do tipo CHAR a partir do byte especificado na memória no mapeamento do arquivo pelo endereço inicial do espaço do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte um número INT para CHAR para escrever no arquivo de mapeamento.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de dados maior que a memória alocada;
//| -2 valor não gravado na memória.
//| int FileMappingWriteSimpleCharValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int nValue); // Valor lógico para escrever no mapeamento do arquivo.

//|18. A função grava um número do tipo CURTO do byte especificado na memória no mapeamento do arquivo pelo endereço inicial do espaço do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte um número do tipo INT para SHORT para escrever no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 nenhum valor é gravado na memória.
//| int FileMappingWriteSimpleShortValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int nValue); // valor lógico para escrever no mapeamento do arquivo.

//|19. A função grava o número do tipo INT desde o byte especificado na memória até o mapeamento do arquivo no endereço do espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 nenhum valor é gravado na memória.
//| int FileMappingWriteSimpleIntValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int nValue); // Um número inteiro para escrever no mapeamento do arquivo.
 
//|20. A função escreve um número do tipo FLOAT no mapeamento do arquivo no endereço do espaço inicial do processo de chamada a partir do byte especificado na memória.
//| A função converte um número DOUBLE em FLOAT para escrever no mapeamento do arquivo. A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 nenhum valor é gravado na memória.
//| int FileMappingWriteSimpleFloatValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const double dValue); // número de precisão duplo para escrever no mapeamento do arquivo.

//|21. A função escreve um número do tipo DOUBLE a partir do byte especificado na memória no mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de dados maior que a memória alocada;
//| -2 valor não gravado na memória.
//| int FileMappingWriteSimpleDoubleValue(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const double dValue); // número de precisão duplo para escrever no mapeamento do arquivo.

//|22. A função escreve uma seqüência do byte especificado na memória para o mapeamento do arquivo no endereço de espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 nenhum valor é gravado na memória.
//| int FileMappingWriteSimpleString(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const char *szString); // Uma string para escrever no mapeamento do arquivo.

//| FUNÇÕES PARA LER NÚMEROS E STRINGS DO MAPEAMENTO DE ARQUIVOS.

//|23. A função abre um mapeamento de arquivo e lê a partir dele um valor lógico BOOL do byte especificado na memória.
//| Se o mapeamento do arquivo não existe, ele é criado. A função retorna o valor lido ou FALSO em caso de erro.
//| bool FileMappingReadBoolValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual um número será lido.

//|24. A função abre um mapeamento de arquivo e lê dele um número do tipo CHAR a partir do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função retorna o valor lido, ou NULL, se houver um erro.
//| char FileMappingReadCharValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual um número será lido.

//|25. A função abre um mapeamento de arquivo e lê a partir dele um número do tipo CURTO do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função retorna o valor lido, ou NULL, se houver um erro.
//| curto FileMappingReadShortValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
/// const int nMemorySize, // Quantidade de memória a ser reservada para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual um número será lido.

//|26. A função abre um mapeamento de arquivo e lê a partir dele o número do tipo INT a partir do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função retorna valor lido ou NULL em caso de erro.
//| int FileMappingReadIntValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual um número será lido.

//|27. A função abre um mapeamento de arquivo e lê o número do tipo FLOAT a partir do byte especificado na memória. Se não houver um mapeamento de arquivo, é criado um.
//| A função retorna o valor lido ou NULL em caso de erro. A função converte um número do tipo FLOAT do mapeamento de arquivos para DOUBLE.
//| double FileMappingReadFloatValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
//// const int nMemorySize, //Número de memória reservada para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual o número será lido.

//|28. A função abre um mapeamento de arquivo e lê dele um número do tipo DOUBLE a partir do byte especificado na memória.
//| Se não existir nenhum mapeamento de arquivo, um é criado. A função retorna valor lido ou NULL em caso de erro.
//| duplo FileMappingReadDoubleValue(const char *szNameFileMapping, //Nome para o arquivo que está sendo projetado.
//| const int nMemorySize, // Quantidade de memória a ser reservada para o mapeamento de arquivos.
//| const int nStartByte); // Número de bytes desde o início da memória alocada, a partir do qual o número será lido.

//|29. A função abre o mapeamento do arquivo e lê uma linha dele a partir do byte especificado na memória. Se não houver um mapeamento de arquivo, é criado um.
//| A função retorna um ponteiro para o início da corda.
//| No caso de um erro, a função retorna: O comprimento da string "Error_1" é maior que a memória alocada;
//| "Error_2" endereço inicial não recebido;
//| "Error_3" mensagem de memória não lida;
//| "Error_4" falha no mapeamento do arquivo.
//| char *FileMappingReadString(const char *szNameFileMapping, //Nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, a partir do qual a cadeia será lida.
/// const int nLengthString); // Comprimento da cadeia a ser lida em caracteres (bytes).

//| FUNÇÕES PARA LEITURA DE NÚMEROS E CORDAS A PARTIR DA REPRESENTAÇÃO DO ARQUIVO PROJETADO NO ESPAÇO DE ENDEREÇOS DO PROCESSO DE CHAMADA.

//|30. A função lê desde o mapeamento do arquivo até o espaço de endereço inicial do processo de chamada um valor lógico BOOL a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna um valor de leitura ou FALSO no caso de um erro.
//| bool FileMappingReadSimpleBoolValue(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|31. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo CHAR a partir do byte indicado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna um valor de leitura ou NULL no caso de um erro.
//| char FileMappingReadSimpleCharValue(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|32. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo CURTO a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna um valor de leitura ou NULL no caso de um erro.
//| short FileMappingReadSimpleShortValue(const char *pcAddress); // Pointer to the byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|33. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo INT a partir do byte indicado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna valor lido ou NULL em caso de erro.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|33. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo INT a partir do byte indicado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna valor lido ou NULL em caso de erro.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|34. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo FLOAT a partir do byte indicado na memória. A função é destinada a ser utilizada em laços.
//| A função retorna o valor lido ou NULL no caso de um erro. A função converte um número do tipo FLOAT do mapeamento de arquivos para DOUBLE.
//| double FileMappingReadSimpleFloatValue(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.

//|35. A função abre o mapeamento do arquivo e lê a partir dele o número do tipo DOUBLE do byte indicado na memória.
//| A função é destinada a ser utilizada em laços. A função retorna um valor de leitura ou NULL no caso de um erro.
//| double FileMappingReadSimpleDoubleValue(const char *pcAddress); // Pointer to the byte of memory area of the project file representation,
//| // a partir do qual os dados serão escritos.

//|36. A função abre o mapeamento do arquivo e lê uma linha dele a partir do byte indicado na memória. A função é destinada a ser utilizada em laços.
//| A função retorna um ponteiro para o início da corda.
//| Em caso de erro, a função retorna: "Error_1" o comprimento da string excede a memória alocada;
//| "Error_2" a mensagem da memória não é lida;
//| char *FileMappingReadSimpleString(const char *pcAddress); // Ponteiro para o byte da área de memória da representação do arquivo projetado,
//| // a partir do qual será feita a gravação dos dados.

//| FUNÇÃO DE ESCREVER ARRAYS PARA O MAPA DE ARQUIVO.

//|37 A função abre um mapeamento de arquivo e grava um array com dados do tipo BOOL nele a partir do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado. A função converte os dados da matriz INT para BOOL para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 falha no mapeamento de arquivos.
//| int FileMappingWriteBoolArray(const char *szNameFileMapping, //Nome para o mapeamento de arquivos.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, da qual a matriz será escrita.
//| const int *aiArray, // Ponteiro para array com dados lógicos BOOL a serem escritos no mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|38. A função abre um mapeamento de arquivo e escreve nele um array com dados do tipo CHAR do byte especificado na memória.
Se //| não há nenhum mapeamento de arquivo, um é criado. A função converte os dados da matriz INT para CHAR para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 falha no mapeamento de arquivos.
//| int FileMappingWriteCharArray(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, da qual a matriz será escrita.
//| const int *aiArray, // Ponteiro para array com dados do tipo CHAR a serem escritos no mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|39. A função abre o mapeamento do arquivo e grava um array com dados do tipo CURTO no mesmo a partir do byte especificado na memória.
Se //| não há nenhum mapeamento de arquivo, um é criado. A função converte os dados da matriz INT para SHORT para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 falha no mapeamento de arquivos.
//| int FileMappingWriteShortArray(const char *szNameFileMapping, //Nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, da qual a matriz será escrita.
//| const int *aiArray, // Pointer to array com dados do tipo SHORT para serem escritos no mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.
 
//|40. A função abre um mapeamento de arquivo e escreve nele um array com dados do tipo INT do byte especificado na memória.
Se //| não houver um mapeamento de arquivo, ele é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 cancelamento do mapeamento de arquivos falhou.
//| int FileMappingWriteIntArray(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, //Número de bytes desde o início da memória alocada, da qual a matriz será escrita.
//| const int *aiArray, // Pointer to array with INT type data to be written to file mapping.
/// const int nSizeBuffer); // Tamanho da matriz.

//|41. A função abre o mapeamento do arquivo e grava um array com dados do tipo FLOAT no mesmo a partir do byte especificado na memória.
Se //| não há nenhum mapeamento de arquivo, um é criado. A função converte a matriz de dados DOUBLE para FLOAT para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 falha no mapeamento de arquivos.
//| int FileMappingWriteFloatArray(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
/// const int nStartByte, //número de bytes desde o início da memória alocada, // de onde a matriz será escrita.
//| Const duplo *adArray, // Ponteiro para array com dados do tipo FLOAT a serem escritos no mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|42. A função abre um mapeamento de arquivo e grava um array com dados do tipo DOUBLE do byte especificado na memória.
Se //| Não há nenhum mapeamento de arquivo, um é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 endereço inicial não recebido;
//| -4 matriz não escrita na memória;
//| -5 cancelamento do mapeamento de arquivo falhou.
//| int FileMappingWriteDoubleArray(const char *szNameFileMapping, //Nome para arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
/// const int nStartByte, //número de bytes desde o início da memória alocada, // de onde a matriz será escrita.
//| Const duplo *adArray, // Ponteiro para array com dados do tipo DOUBLE a serem escritos no mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//| FUNÇÕES PARA ESCREVER MATRIZES PARA O ARQUIVO DE REPRESENTAÇÃO DO ARQUIVO PROJETADO NO ESPAÇO DE ENDEREÇAMENTO DO PROCESSO DE CHAMADA.

//|43. A função escreve um array com dados do tipo BOOL do byte especificado na memória no mapeamento do arquivo pelo espaço de endereço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte os dados da matriz INT para BOOL para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 matriz não escrita na memória.
//| int FileMappingWriteSimpleBoolArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int *aiArray, // Ponteiro para a matriz com dados lógicos BOOL a serem escritos no arquivo de mapeamento.
/// const int nSizeBuffer); // Tamanho da matriz.

//|44. A função escreve um array com dados do tipo BOOL do byte especificado na memória para o mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte os dados da matriz INT para CHAR para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 matriz não escrita na memória.
//| int FileMappingWriteSimpleCharArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int *aiArray, // Ponteiro para a matriz com dados do tipo CHAR a serem escritos no mapeamento do arquivo.
/// const int nSizeBuffer); // Tamanho da matriz.

//|45. A função escreve um array com dados do tipo BOOL do byte especificado na memória no mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte os dados da matriz INT para SHORT para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever sobre o tamanho da matriz;
//| -2 número de dados sobre a memória alocada;
//| -3 matriz não escrita na memória.
//| int FileMappingWriteSimpleShortArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int *aiArray, // Pointer to array with data of SHORT type to be written to the file mapping.
/// const int nSizeBuffer); // Tamanho da matriz.

//|46. A função escreve um array com dados do tipo INT do byte especificado na memória para o mapeamento do arquivo no endereço inicial do espaço do processo de chamada. |
//| A função destina-se a ser usada em loops.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 nenhuma matriz é escrita na memória.
//| int FileMappingWriteSimpleIntArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| const int *aiArray, // Ponteiro para a matriz com dados do tipo INT a serem escritos no mapeamento do arquivo.
/// const int nSizeBuffer); // Tamanho da matriz.

//|47. A função escreve um array com dados do tipo FLOAT no mapeamento do arquivo a partir do byte especificado na memória pelo endereço inicial do espaço do processo de chamada.
//| A função é destinada a ser utilizada em laços. A função converte os dados da matriz DOUBLE para FLOAT para escrita no mapeamento do arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 nenhuma matriz é escrita na memória.
//| int FileMappingWriteSimpleFloatArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| Const duplo *adArray, // Ponteiro para array com dados do tipo FLOAT a serem escritos no arquivo de mapeamento.
/// const int nSizeBuffer); // Tamanho da matriz.

//|48. A função escreve um array com dados do tipo DOUBLE desde o byte especificado na memória até o mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada.
//| A função é destinada a ser utilizada em laços.
//| retornos de funções: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 número de células para escrever mais do que o tamanho da matriz;
//| -2 número de dados mais do que a memória alocada;
//| -3 matriz não escrita na memória.
//| int FileMappingWriteSimpleDoubleArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| Const duplo *adArray, // Ponteiro para array com dados do tipo DOUBLE a serem escritos no arquivo de mapeamento.
/// const int nSizeBuffer); // Tamanho da matriz.

//| FUNÇÕES PARA LER MATRIZES A PARTIR DO MAPEAMENTO DE ARQUIVOS.

//|49. A função abre um mapeamento de arquivo e lê a partir dele dados do tipo BOOL em um array a partir do byte especificado na memória.
//| Se não existir um mapeamento de arquivo, é criado um mapeamento de arquivo.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 nenhum endereço inicial recebido;
//| -4 mensagem da memória não lida;
//| -5 desfazer mapeamento de arquivo falhou.
//| int FileMappingReadBoolArray(const char *szNameFileMapping, //| nome para o arquivo sendo mapeado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte, //Número de bytes desde o início da memória alocada, a partir da qual a matriz será escrita.
//| int *aiArray, // Ponteiro para array para leitura dos dados lógicos BOOL do mapeamento do arquivo para dentro dele.
/// const int nSizeBuffer); // Tamanho da matriz.
 
//|50. A função abre um mapeamento de arquivo e lê dados do tipo CHAR dele em uma matriz a partir do byte especificado na memória.
Se //| não houver um mapeamento de arquivo, ele é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer de recepção não é suficiente;
//| -3 o endereço inicial não é recebido;
//| -4 a mensagem da memória não é lida;
//| -5 o mapeamento do arquivo falhou.
//| int FileMappingReadCharArray(const char *szNameFileMapping, //| Nome para o arquivo sendo mapeado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, //Número de bytes desde o início da memória alocada a partir da qual a matriz será escrita.
//| int *aiArray, // Ponteiro para a matriz para leitura de dados do tipo CHAR do mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|51. A função abre o mapa do arquivo e lê dados do tipo CURTO no array a partir do byte especificado na memória.
Se //| Não há nenhum mapeamento de arquivo, um é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 o endereço inicial não é recebido;
//| -4 a mensagem da memória não é lida;
//| -5 o mapeamento de arquivo cancelado falhou.
//| int FileMappingReadShortArray(const char *szNameFileMapping, //Nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, //Número de bytes desde o início da memória alocada a partir da qual a matriz será escrita.
//| int *aiArray, // Ponteiro para a matriz para leitura de dados CURTADOS do mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|52. A função abre o mapa do arquivo e lê dados do tipo INT a partir dele para o array a partir do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 o endereço inicial não é recebido;
//| -4 a mensagem da memória não é lida;
//| -5 o mapeamento do arquivo falhou.
//| int FileMappingReadIntArray(const char *szNameFileMapping, //| nome do arquivo que está sendo mapeado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte, //Número de bytes desde o início da memória alocada a partir da qual a matriz será escrita.
//| int *aiArray, // Ponteiro para a matriz para leitura de dados do tipo INT a partir do mapeamento do arquivo para dentro dela.
/// const int nSizeBuffer); // Tamanho da matriz.

//|53. A função abre o mapa de arquivo e lê dados do tipo FLOAT a partir dele para o array a partir do byte especificado na memória.
Se //| não há nenhum mapeamento de arquivo, um é criado. A função converte os dados do tipo FLOAT do mapeamento do arquivo para DOUBLE para leitura no array.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 nenhum endereço inicial recebido;
//| -4 mensagem da memória não lida;
//| -5 desfazer mapeamento de arquivo falhou.
//| int FileMappingReadFloatArray(const char *szNameFileMapping, //Nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória reservada para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, // a partir do qual a matriz será escrita.
//| duplo *adArray, // Ponteiro para a matriz para leitura de dados do tipo FLOAT do mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//|54. A função abre um mapeamento de arquivo e lê dados do tipo DOUBLE a partir dele em um array a partir do byte especificado na memória.
//| Se não houver um mapeamento de arquivo, um é criado.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados que a memória alocada;
//| -2 o tamanho do buffer de recepção não é suficiente;
//| -3 o endereço inicial não é recebido;
//| -4 a mensagem da memória não é lida;
//| -5 o mapeamento de arquivo cancelado falhou.
//| int FileMappingReadDoubleArray(const char *szNameFileMapping, //| nome para o arquivo projetado.
/// const int nMemorySize, // Quantidade de memória a reservar para o mapeamento de arquivos.
//| const int nStartByte, // Número de bytes desde o início da memória alocada, // a partir do qual a matriz será escrita.
//| duplo *adArray, // Ponteiro para array para leitura de dados DOUBLE do mapeamento de arquivos.
/// const int nSizeBuffer); // Tamanho da matriz.

//| FUNÇÃO PARA LER MATRIZES NO ARQUIVO DE REPRESENTAÇÃO DE MAPEAMENTO DO ARQUIVO PROJETADO NO ESPAÇO DE ENDEREÇAMENTO DO PROCESSO DE CHAMADA.

//|55. A função lê dados do tipo BOOL do mapeamento do arquivo pelo espaço de endereço inicial do processo de chamada em uma matriz a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 mensagem da memória não lida.
//| int FileMappingReadSimpleBoolArray(const char *pcAddress, // Pointer to the byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.
//| int *aiArray, // Apontador para a matriz para a leitura dos dados lógicos da BOOL para dentro dela a partir do mapeamento do arquivo.
/// const int nSizeBuffer); // Tamanho da matriz.

//|56. A função lê dados do tipo CHAR do mapeamento do arquivo pelo endereço inicial do espaço do processo de chamada em uma matriz a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 a mensagem da memória não é lida.
//| int FileMappingReadSimpleCharArray(const char *pcAddress, // Pointer to the byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.
//| int *aiArray, // Ponteiro para a matriz para leitura de dados do tipo CHAR do mapeamento do arquivo.
/// const int nSizeBuffer); // Tamanho da matriz.

//|57. A função lê dados do tipo CURTO do mapeamento do arquivo pelo endereço inicial do espaço do processo de chamada para a matriz a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 a mensagem da memória não é lida.
//| int FileMappingReadSimpleShortArray(const char *pcAddress, // Pointer to byte de área de memória de representação de arquivo projetado,
//| // a partir do qual os dados serão escritos.
//| int *aiArray, // Apontador para array para leitura de dados CURTADOS do mapeamento do arquivo para dentro dele.
/// const int nSizeBuffer); // Tamanho da matriz.

//|58. A função lê dados do tipo INT do mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada na matriz a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 mensagem da memória não lida.
//| int FileMappingReadSimpleIntArray(const char *pcAddress, // Pointer to the byte da área de memória da representação do arquivo projetado,
//| // a partir do qual os dados serão escritos.
//| int *aiArray, // Ponteiro para o array para leitura dos dados do tipo INT a partir do mapeamento do arquivo para ele.
/// const int nSizeBuffer); // Tamanho da matriz.

//|59. A função lê dados do tipo FLOAT do mapeamento do arquivo pelo endereço inicial do espaço do processo de chamada para o array a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços. A função converte os dados do tipo FLOAT do mapeamento do arquivo para DOUBLE para leitura em um array.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 mensagem da memória não lida.
//| int FileMappingReadSimpleFloatArray(const char *pcAddress, //| pointer to the byte of the memory area of the project file representation,
//| // a partir do qual os dados serão escritos.
//| duplo *adArray, // ponteiro para o array para leitura dos dados do tipo FLOAT do mapeamento do arquivo para dentro dele.
/// const int nSizeBuffer); // Tamanho da matriz.

//|60. A função lê dados do tipo DOUBLE a partir do mapeamento do arquivo pelo endereço de espaço inicial do processo de chamada na matriz a partir do byte especificado na memória.
//| A função é destinada a ser utilizada em laços.
//| A função retorna: 1 conclusão bem sucedida;
//| 0 outros erros;
//| -1 mais dados do que a memória alocada;
//| -2 o tamanho do buffer receptor não é suficiente;
//| -3 mensagem da memória não lida.
//| int FileMappingReadSimpleDoubleArray(const char *pcAddress, // pointer to the byte of the memory area of the project file representation,
//| // from which the data will be written the data.
//| duplo *adArray, // ponteiro para o array para leitura de dados do tipo DOUBLE do mapeamento do arquivo para dentro dele.
/// const int nSizeBuffer); // Tamanho da matriz.
 
Zhunko >>:
Это не исходник, и не DLL. Это офрмленный заголовок исходника DLL, на который потратил больше недели. Написание класса для маппинга заняло неделю. В основном на продумывание структурированности.
А само писание 60 функций заняло 60 минут. Там в каждой функции по паре строчек.
É uma biblioteca muito agradável. Você não pode compartilhar os arquivos acabados? Ou isso envolve pagamento?
 
Andrei01 >>:
Очень приятная библиотечка. А файлами готовыми Вы не можете поделиться? Или это подразумевает оплату?

Ainda não terminado. Tudo está em processo. Estou corrigindo erros na descrição e edição de nomes de funções, eles são muito longos para a MQL4.
Os testes estão muito longe. A biblioteca destina-se a funcionar com minha caixa de ferramentas e, portanto, está protegida. Eu não lhe darei o código fonte.
Se você quiser, pode alugá-lo. :-))
Mas, afinal de contas, as coisas mais valiosas que você colocou para fora. Esta descrição é mais importante do que o código fonte.

 
3/4 testado. Descobrimos que precisamos acrescentar mais 16 funções para inteiros não assinados, exceto INT.
No momento, o arquivo de cabeçalho tem este aspecto:
Arquivos anexados:
 
Acabado. 80 funções agora. Coloque-o no mealheiro. Provavelmente aparecerá em breve.
O arquivo de cabeçalho é agora como este:
Arquivos anexados:
 
Zhunko: Всё-таки, общение через файлы это не тот инструмент. Не по назначению.
Файлы придуманы для длительного хранения информации. Зачем терзать диск? Для общения есть ОЗУ.

Se você criar um disco em RAM (RAMdisk), então o disco rígido não sofrerá e oferecer JavaDev faz um certo sentido.

E para a biblioteca - muito obrigado!!! Apenas uma obra-prima!!!