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
Descobri um erro no CDictionary. Quando você usa o método Reset, ele exclui o objeto CList em m_data. As chamadas subsequentes para outros métodos que buscam o ponto do dicionário recebem um ponteiro ruim como retorno. Exemplo:
Eu proporia a seguinte correção para todos os métodos que usam o hash de chave para acessar um objeto CList da matriz m_data.
Descobri um erro no CDictionary. Quando você usa o método Reset, ele exclui o objeto CList em m_data. As chamadas subsequentes para outros métodos que buscam o ponto do dicionário recebem um ponteiro ruim como retorno. Exemplo:
Eu proporia a seguinte correção para todos os métodos que usam o hash de chave para acessar um objeto CList da matriz m_data.
Obrigado, Nicoli Shen. Sua solução é a mais "segura". No entanto, não consigo reproduzir o problema.
Outro aspecto que me incomoda está relacionado a isso: um ponteiro de objeto deve poder aceitar um valor nulo. m_data é uma matriz dinâmica, portanto, deve retornar nulo quando um índice não preenchido da matriz for recuperado ou o item armazenado for excluído. O armazenamento de dados de m_data em CList* sem verificação prévia do ponteiro também é feito em outros métodos, como Get() e Delete(), de modo que os scripts de teste acima também devem falhar se esse problema existir. Uma simples atribuição entre um ponteiro e outro pode ser feita sem nenhum erro de acesso ao ponteiro, mesmo que o objeto para o qual o valor l aponta já tenha sido excluído:
O problema pode ser reduzido ao exemplo acima. Mas, nesse caso, não há erros de ponteiro. Estou curioso porque me lembro de ter encontrado esse mesmo problema em uma compilação anterior, que foi rapidamente corrigida.
No momento, estou usando o MT5 build 1932, mas me avise se estiver faltando alguma coisa.
Estou com este erro:
'Key' - token inesperado, provavelmente o tipo está faltando? Dictionary.mqh 39 23
'Key' - função já definida e com tipo diferente Dictionary.mqh 39 23
Veja a declaração de 'CDictionaryEntryBase::Key' Dictionary.mqh 20 22
Tentando cumprir com a compilação 3320
Estou com este erro:
'Key' - token inesperado, provavelmente o tipo está faltando? Dictionary.mqh 39 23
'Key' - função já definida e com tipo diferente Dictionary.mqh 39 23
Veja a declaração de 'CDictionaryEntryBase::Key' Dictionary.mqh 20 22
Tentando cumprir com a compilação 3320