Discussão sobre "Como escrever uma DLL para MQL5 e trocar dados em 10 minutos". - página 6
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Usarwchar_t em vez de char
O problema reside no próprio mql.
Que tipo de código é este? Copiar um ponteiro é apenas copiar 4 bytes de memória contendo o endereço.
Neste caso, o memcpy pode ajudá-lo, se tratar da atribuição do buffer necessário na linha de recepção com antecedência (no programa MQL5).
Que tipo de código é este? Copiar um ponteiro é apenas copiar 4 bytes de memória contendo o endereço.
Neste caso, o memcpy pode ajudá-lo, se se ocupar da atribuição do buffer necessário na linha de recepção (no programa MQL5).
O que tem o ponteiro a ver com isto? Este código funciona perfeitamente em mql4. Não depois da migração para mql5.
Todos aqui estão a dar conselhos, mas gostaria que se mostrasse um exemplo realmente bom de como passar a string da função mql5 para dll.
...
Pergunta
Qual é o problema? Como passar humanamente uma string da MQL para dll?
1) Obrigado pela sua mensagem. O erro foi corrigido. Aguarde por favor por uma actualização.
2) Foi-lhe correctamente informado sobre wchar _t - as cordas em MQL5 são Unicode.
3) O que quer dizer com "Ao verificar em depuração visual"?
4) Esta é a forma correcta de o utilizar:
Obrigado por ajudar programadores lutadores como eu. :) O vosso exemplo trouxe alguma clareza à minha situação.
Decidi escrever a função para converter um fio de wchar_t em bom e velho char. Esta função pode ser útil para aqueles cujos projectos têm muitos códigos que utilizam o tipo de char. E como a MQL5 passa apenas wchar_t, é mais fácil de converter na entrada do que reescrever metade do código dll.
Obrigado por ajudar programadores lutadores como eu. :) O vosso exemplo trouxe alguma clareza à minha situação.
Decidi escrever (ou oitavo, quem pode precisar) função para converter cordel de wchar_t em bom e velho char. Esta função pode ser útil para aqueles cujos projectos têm muitos códigos que utilizam o tipo de char. E como a MQL5 passa apenas wchar_t, é mais fácil de converter na entrada do que reescrever metade do código dll.
Funções DLL que aceitam cordas como char *, claro, levam um ponteiro para o primeiro elemento da matriz do tipo char. Isto significa que ao descrever a importação de tais funções no programa MQL5, devemos usar a matriz de caracteres como parâmetro de string.
Para estes casos, fornecemos a função StringToCharArray que converte correctamente as cordas no alfabeto nacional. A função dos wcstombs nem sempre o faz correctamente.
O artigo é interessante e útil.
1) O facto de o código fonte estar incluído é fixe. Heh, mas onde está a DLL compilada? Obviamente, não é um problema para um Megaproger criá-la.
Mas e se eu não for um Mega e não um Proger?! :)
2) O artigo utiliza um compilador de EM. Não sou amigo:) Eu tenho BC+++. Pode afixar o código fonte afinado para ele?
(IMHO, provavelmente, é sempre melhor afixar fontes para EM e BC, são duas empresas líderes, mas os seus estilos de escrita são diferentes).
Tentamos não publicar códigos potencialmente perigosos (DLLs) de modo a não deixar os utilizadores nervosos. Além disso, este é apenas um exemplo de teste.
Infelizmente, não tenho o compilador Borland C++ em mãos. Tente adaptá-lo você mesmo, é menos de uma página de código.
yu-sha:
Os programadores não estão a colocar a sua mira demasiado alta?
E porquê reinventar a roda quando tudo já foi feito há muito tempo (C, Delphi, ...)?
Não se deve fazer o que parece certo, mas o que é benéfico. Porque rentável é o que está certo. E neste caso (MT5+MQL5+serviços) - um enorme lucro (será reembolsado dezenas ou centenas de vezes) para as MetaQuotes e um enorme lucro para os comerciantes. Mas não de imediato.
É sempre bom olhar para a frente e para a frente durante pelo menos 5 anos. A MetaQuotes fez exactamente isso.