Erros, bugs, perguntas - página 1499
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
O caminho para a programação do inferno está pavimentado comvariáveisglobais" (Steve McConnell)
Será acrescentado um aviso sobre a não utilização real de variáveis locais e globais (tipo simples ou "complexo" sem construtores), mas a prioridade desta tarefa é baixa.
Uma activação por PC. Não importa quantos terminais existam.
Há alguma confirmação em algum lugar?
O Comprador adquire o direito de activar o Produto tantas vezes quantas as especificadas pelo Vendedor no momento da compra ou aluguer do Produto. Por exemplo, se forem permitidas 20 activações para o Produto no momento da compra, o Comprador poderá instalá-lo em 20 configurações de hardware diferentes, mesmo que o Vendedor reduza posteriormente este número.
https://www.mql5.com/ru/market/rules
Slawa, boa tarde, pode comentar sobre a biblioteca (pergunta acima)?
É assim que se resolve o problema.
Esta é a forma de o corrigir
É assim que se resolve o problema.
Qual é o objectivo de fazer isto? A biblioteca padrão deve ser utilizada não como o utilizador quiser, mas em estrita conformidade com a ideologia da sua estrutura.Alexey Kozitsyn utiliza-o incorrectamente e é por isso que recebe muitos bugs na produção. Basta anexar o gráfico ao objecto de classe utilizando o método Attach depois de ter criado o objecto CCart. Este método está sobrecarregado e pode anexar ambos, o gráfico actual e o necessário. A sua mudança para o método aberto matará a capacidade de trabalhar com o gráfico actual.
E o pedido aos criadores da biblioteca padrão - por favor faça uma descrição da estrutura da biblioteca. Muitos não o entendem e começam a cometer erros, e você alinha com eles, começa a quebrar tudo o que foi feito.
Pergunta sobre a biblioteca padrão MT4.
Ficheiro Chart.mqh
Quero abrir a carta. Utilizo o método Open(const string symbol_name,const ENUM_TIMEFRAMES timeframe).
1. Se utilizar um símbolo indisponível, a função ChartOpen() devolverá o erro #4024 - erro interno. Sem dúvida, o erro pode ser interno, mas existe um código de erro muito mais exacto - #4106 - um símbolo desconhecido. Talvez devêssemos alterar o código de erro devolvido? Uma vez que o 4024 não diz nada ao programador sobre onde procurar o erro.
2. Em caso de falha, ChartOpen() atribui o valor 0 ao campo m_chart_id, ou seja, acontece que começamos a trabalhar com o gráfico actual, mas isto não é correcto, porque não conseguimos abrir o gráfico que precisamos para o trabalho. Consequentemente, se não chamarmos o método Detach(), o gráfico actual irá simplesmente fechar após o trabalho. Também penso que esta não é a abordagem correcta. A função ChartOpen() retornaria melhor -1 em caso de um erro.
Antes de trabalhar com um gráfico, ele precisa de ser anexado a um objecto de classe utilizando o método Attach!!! Se não quiser trabalhar com o gráfico actual ( 0 ), então implemente esta verificação e proíba a utilização do gráfico actual no seu trabalho.
E o que significa trabalhar com o gráfico e não fechá-lo usando o método Detach para sair? É realmente difícil escrever uma linha no destruidor das suas aulas ou no OnDeinit? O trabalho com objectos deve ser rigorosamente controlado, assim poderá evitar erros.
Qual é o objectivo de fazer isto? A biblioteca padrão deve ser utilizada não como o utilizador deseja, mas em estrita conformidade com a ideologia da sua estrutura.Alexey Kozitsyn não o utiliza correctamente e é por isso que ele recebe muitos bugs na saída. Basta anexar o gráfico ao objecto de classe utilizando o método Attach depois de ter criado o objecto CCart. Este método está sobrecarregado e pode anexar ambos, o gráfico actual e o necessário. A sua mudança para o método aberto matará a capacidade de trabalhar com o gráfico actual.
E o pedido aos criadores da biblioteca padrão - por favor faça uma descrição da estrutura da biblioteca. Muitas pessoas não o compreendem e começam a cometer erros, e você está a seguir a sua pista e a começar a quebrar tudo o que fez.
Escrevi claramente acima qual é o objectivo de o fazer. Se houver um erro ao abrir o gráfico (por exemplo, se definir um símbolo inválido), então, por alguma razão, por analogia com o método Attach(void), o método Open() irá ligar o identificador do gráfico actual ao objecto. Porque deveria fazer isso? Se eu quiser trabalhar com o gráfico actual, chamarei o método Attach(void) { m_chart_id=ChartID(); } e é tudo. Mas aqui tenho uma situação obviamente errada onde, por alguma razão, começo a trabalhar com a coisa errada. Em geral, é um problema com a própria função ChartOpen(), mas como não a vão alterar, pelo menos deixem-na ser alterada na biblioteca.
Outro argumento. Por favor, pense logicamente. O método chama-se Open(). Isso implica que algo novo será aberto! E vamos começar a trabalhar com este novo artigo. Mas aqui parece que estamos a trabalhar com o antigo. Não vejo qualquer lógica. E parece utilizar esta inexactidão para os seus próprios fins.
Este método está sobrecarregado e pode ligar tanto o gráfico actual como o necessário. E a sua mudança para o método Aberto matará a capacidade de trabalhar com o gráfico actual.
O que irá matar? Continuará a ter o método Attach(), continuará a fazer o que estava a fazer. Como já disse, verifique o ID de retorno da função Open() e se for inferior a 0, chame o método Attach(void). E é tudo. Só não compreendo porque é que precisa de fazer tal confusão, se pode simplesmente chamar o método Attach(void) e anexar o gráfico actual.
Talvez eu não o compreenda. Depois dê-me um exemplo.
Pede-se também aos criadores da biblioteca padrão que façam uma descrição da estrutura da biblioteca. Muitas pessoas não o compreendem e começam a cometer erros, e você alinha com eles e começa a quebrar tudo o que fez.