Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
A lib não se vincula a seções porque, teoricamente, o código pode ser executado em diferentes processos.
Para controlá-lo, use sua variante ou https://www.mql5.com/pt/code/1835, por exemplo.
Entendi corretamente que, se o mutex for nomeado, poderei obter seu identificador de qualquer processo, não apenas do metatrader?
Pergunta para o autor.
Eu uso a classe no mt4. Se eu desligar e ligar o terminal, tudo para de funcionar. A saída não é muito conveniente: excluir os Expert Advisors antes de desligar e anexá-los depois de ligar o terminal. Existe alguma maneira de contornar esse problema?
E a segunda. Não consigo ler o mapeamento de arquivos criado por um programa escrito em Delphi. Quais podem ser as nuances.
Resumidamente, esses são painéis de negociação que funcionam em vários terminais.
Se você desligar e ligar o terminal, tudo para de funcionar. A saída não é muito conveniente, pois é preciso excluir os EAs antes de desligar e anexá-los depois de ligar o terminal. Existe alguma maneira de contornar esse problema?
É necessário registrar e ver o que acontece com os arquivos durante essa desinicialização.
Não consigo ler o mapeamento de arquivos
Qual é a função do winapi que se refere a "ler"?
É necessário registrar e ver o que acontece com os arquivos durante essa desinicialização. não há bloqueios.
qual função do winapi é chamada de "read" (ler)?
O fato é que a função
sempre retorna 0.
É por isso que não consigo entender se o arquivo está aberto.
Na imagem acima está o registro do Expert Advisor abrindo um mapeamento de arquivo que ainda não foi criado. E não há erros.
Talvez a função
CMemMapFile::Opennão deva ser inserida em int OnInit(), mas em algum lugar mais adiante, por exemplo, em OnTick(), mas como o identificador retornado é sempre 0, não há possibilidade de fazer uma verificação para evitar a abertura constante do arquivo a cada tick.
E quanto à segunda pergunta.
No Delphi, criei um aplicativo que cria um mapeamento de arquivo. Ao conectá-lo, ocorrem erros. Ou seja, números não passados corretamente. Comecei a alinhar com {$Align Off}
Recebi outros erros, como Access violation read to 0x04E91000 in 'msvcrt.dll'.
Agora os dados estão alinhados normalmente em 19 bytes - "00:35:50.260 Panel v 1.00 GBPUSD.m,M5: OnInitsizeof(PipeData)= 19".
mas, ao ler, todos os dados são zero.
O problema é que a função
sempre retorna 0.
É por isso que não consigo entender se o arquivo está aberto.
É isso mesmo, CMemMapFile::Open retorna um código de erro ou 0 quando não há erro.
(ao contrário de CMemMapApi:, que retornará um identificador aberto e gravará o erro no parâmetro passado).
E o identificador está em m_hmem.
No delphi, você cria um aplicativo que cria um mapeamento de arquivo. Ao conectá-lo, ocorrem erros. Ou seja, números não passados corretamente.
Você leva em conta os bytes DWORD reservados no início do arquivo?4 bytes? vou tentar, não contei.
Veja como o arquivo é gravado ou criado na fonte.
no parâmetro m_size
estiver correto, CMemMapFile::Open retorna um código de erro ou 0 quando não há erro.
(ao contrário de CMemMapApi:, que retornará um identificador aberto e gravará o erro no parâmetro passado).
E o identificador está em m_hmem.
Você leva em conta os bytes DWORD reservados no início do arquivo?é m_hmem ao abrir um mapeamento de arquivo inexistente. Como determinar se isso é um erro ou um identificador?
é m_hmem ao abrir um mapeamento de arquivo inexistente. Como determinar se é um erro ou um identificador?