Erros, bugs, perguntas - página 2748
![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
Isso é muito texto, não o li todo.
Mas se tiver algo a funcionar em versão debug e ainda não estiver a funcionar em versão debug, ou vice-versa, então verifique se todas as variáveis e campos, especialmente em classe/estrutura, foram inicializados.
Os dados que precisavam de ser inicializados, eu inicializei. E se alguns dados aleatórios estiverem lá, provocará um erro no próprio programa (por exemplo, Array fora de alcance ou Invalid pointer). Pelo menos, não afectará o funcionamento do depurador. E ajuda a encontrar tais insectos.
Talvez tenha este defeito:
(não corrigido por ME5(build 2390)) ** (novo) Debuger, StepInto (F11) e breakpoints instalados não funcionam.
Talvez a sua estrutura de ficheiros seja tão complexa que o depurador não consiga associar um ponto de ruptura, então o problema é do depurador.
Penso que a estrutura do ficheiro dos elementos padrão da IU que utilizo no meu projecto é ainda mais complexa do que o meu trabalho. Teria de trabalhar muito para fazer algo assim. Mas tal como está, toma-o e utiliza-o, como se costuma dizer. Se juntar tudo, como no meu caso. Depois, de facto, obtém-se algo complicado. Mas para a execução de programas é bastante normal.
Inicialmente, isto foi trazido à baila.
Numa determinada fase, não só a parte relativa do tempo despendido se torna importante, mas também a parte absoluta.
Habitue-se a atribuir variáveis em C durante algum tempo, e é um bom hábito fazê-lo.
Na primeira função personalizada, a estrutura de entrada MqlTick é passada directamente para a função MQL, sem qualquer alocação de memória.
A esta entrada chama-se má codificação.
No segundo exemplo, a variável CurrentTick é criada; a memória é atribuída para ela.
E esta entrada é considerada mais correcta.
Uma vez que a memória já está atribuída, os dados de entrada são processados mais rapidamente, sem custos desnecessários.
Se obtiver um pouco mais de C, terá o hábito de alocar variáveis.
...
E esse registo é considerado mais correcto.
Contado por quem? Poderia pelo menos dar-nos primeiro as medidas de velocidade.
Quem está a contar? Podia pelo menos dar-me uma medida de velocidade para começar.
Demasiada atenção para um troll.
Se seguir os seus próprios conselhos, poderá ter pelo menos um vislumbre de atribuição.
Por alocação, referia-me à alocação de memória.
Não nesse sentido literal como uma classe.
Uma função definida pelo utilizador tem o seu próprio alcance.
Quem conta? Deve, pelo menos, dar algumas medidas de velocidade para começar.
Na página anterior, fxsaber deu as medidas.
Expliquei porque acontece desta forma.
Alocar sempre memória, de forma estática ou dinâmica.
Talvez tenha este defeito:
(não corrigido por ME5(build 2390)) ** (novo) Depurador, StepInto (F11) e breakpoints instalados não funcionam.
É possível... Experimentei o método CCheckGroup::itemCheckState(const string item) que descrevi acima. E no início o depurador vai lá. Mas uma vez que sai e pronto, o depurador já não o vê e nenhum ponto de ruptura ou "Passo com entrada" funciona. Bem, teremos de nos contentar com Print() e Alert() temporariamente.