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
Peter, você pode me tratar como quiser, é um direito seu, mas aceite conselhos de um camarada um pouco mais experiente.
O arquivoGUI_DRIVE.mqh é conectado primeiro no código. Nada é declarado antes dele.
Se você compilá-lo, você terá erro de G_CORE faltando, e é lógico porque o array não é declarado neste arquivo!
Conclusão? Bem, a conclusão é elementar: a matriz deve ser declarada neste arquivo. No final, é este arquivo que opera com esta matriz, porque este arquivo é o "motor"! Portanto, a declaração da matriz em si é correta, de acordo com o contexto de uso.
O próximo arquivo,CORES.mqh, preenche a matriz com a descrição dos elementos do formulário.
Naturalmente, ao compilar a própria EA com estes arquivos, se o array for declarado no primeiro arquivo, não haverá problemas de compilação, porque quando você compilar o segundo arquivo, o array já estará visível no contexto do programa.
Mas o que estamos dizendo é que cada arquivo deve ser compilado sem erros. Como o segundo arquivo preenche a matriz G_CORE com elementos, encontraremos naturalmente um erro ao compilar este arquivo, se a matriz não for declarada.
E aqui usamos, como disse Alexander, um toco.
Pyotr, você é um grande fã de definições, então você saberá o que está acontecendo.
No arquivo GUI_DRIVE você declara um array global de elementos do kernel G_CORE, depois disso o arquivo deve ser compilado sem erros.
Em seguida, neste arquivo você adiciona uma definição.
#define __DRIVE__
Passar para o arquivo Cores. Antes de declarar um array, utilize o pré-processador de compilação.
E então você preenche a matriz. Naturalmente, você terá que mudar um pouco a maneira de preencher a matriz, para fazê-lo sem declaração.
Acho que você tem a essência: se o arquivo CORES for compilado, o padrão__DRIVE__ desaparece e o código de declaração da matriz é compilado e tudo funciona bem.
Se o arquivo for compilado como parte do EA, então, após compilar o primeiro arquivo, a definição é declarada e no segundo arquivo a matriz não é declarada porque o compilador "corta" este pedaço de código.
Espero ter me feito entender.
Vou repetir novamente: todo arquivo deve ser compilado sem erros. Se você tem dependências, você precisa providenciar adequadamente sua localização e adicionar processadores de recompilação conforme necessário.
Quando você tem cada arquivo compilado sem erros, você tem mais confiança na integridade de todo o sistema.
Além disso, não se esqueça de acrescentar um imóvel em cada arquivo:
Esta propriedade permite uma verificação mais rigorosa do código.
Sim, ao manipular o pré-processador, você pode fazer com que cada arquivo seja compilado separadamente sem erros.
Alguns camaradas estão escrevendo um software separado que muda ligeiramente a interface do próprio meta-editor - apenas para facilitar o uso!
Este padrão é como usar um teclado - em vez de digitar letras em código morse através de um guincho. Os stubs não mudam nada, exceto a constante alternância entre arquivos em tempo de compilação. Mas um toco é 2 linhas de código. Quanto tempo gastaríamos nesta navegação apenas para apertar um botão. E quantas vezes viraremos 7 e o que se tornará mais racional para não desperdiçar nossas vidas digitando cartas através de um guincho
Note que não estamos falando de objetos ou classes, estamos apenas falando de economia de tempo. Seu tempo... E você mesmo pode criar um padrão para escrevê-los.Para não mencionar a codificação em russo, que por padrão é discriminada pelo ambiente de desenvolvimento em inglês. Devo também adaptar e deixar meu cérebro com uns míseros 30% de desempenho, enquanto posso usar todos os 100% em russo?
Os profissionais utilizam seus próprios tipos de dados em seu código. Em geral, não importa em que idioma eles estejam.
Mas se uma função espera um número inteiro nesta ordem: Aceitar (largura, altura).
Em vez disso, misturamos acidentalmente e escrevemos
Aceitar (altura, largura) - então o próprio copiador diz que temos aqui uma confusão. Quer funcione para você - também não se trata da linguagem ou dos objetos. Trata-se apenas de não ter que procurar este erro por si mesmo
Em código profissional, as pessoas utilizam seus próprios tipos de dados. Não importa realmente em que idioma eles estão.
Mas se uma função espera um número inteiro nesta ordem: Aceitar (largura, altura).
Em vez disso, misturamos acidentalmente e escrevemos
Aceitar (altura, largura) - então o próprio copiador diz que temos aqui uma confusão. Quer funcione para você - também não se trata da linguagem ou dos objetos. Trata-se apenas de não ter que procurar este erro por si mesmo.
Peter, você pode me tratar como quiser, é seu direito, mas siga o conselho de um camarada um pouco mais experiente.
.......
Não se esqueça também de acrescentar um imóvel em cada arquivo:
Esta propriedade permite uma verificação mais rigorosa do código.
é para 5 - lá é sempre o mesmo!
embora em geral eu concorde: muitas advertências na compilação não aumentam a confiança no código.
é feito para cinco - é sempre rigoroso!
embora eu concorde em geral: muitos avisos em tempo de compilação não aumentam a confiança no código.