Erros, bugs, perguntas - página 2720

 
Mais uma vez há um problema com avisos inúteis ao compilar o código MT5(build 2380).
Por favor, considere a possibilidade de desactivar avisos de compilação desnecessários para o programador:
declaration of 'm_range' hides member   
   in template 'NodeArray<NodeArray<TailArray<int>>>' specified with [T=NodeArray<TailArray<int>>]      
   see previous declaration of 'm_range'        
declaration of 'm_range' hides member
   in template 'NodeArray<NodeArray<NodeArray<TailArray<int>>>>' specified with [T=NodeArray<NodeArray<TailArray<int>>>]
   see previous declaration of 'm_range'

Código Fonte, Multidimensional Array Prototype (C++ online:https://onlinegdb.com/Hk7QjyRdL):
#define  PRINT(x) ; Print(#x, ":", string(x))

template<typename T>
class TailArray{
protected:
   int m_index;
   T data[];
   
protected:
   TailArray(){}   
public:     
   TailArray(int size){
      ArrayResize(data, size);
      m_index = 0;
   };
   
   T value(){
      int index = m_index;
      m_index = 0;
      return data[index];
   }
   const T operator=(const T value){
      data[m_index] = (T)value;
      m_index = 0;
      return value;
   };
};

template<typename T>
class NodeArray : public T{
protected:
   int m_range;
   
protected:
   NodeArray(){}   
public:     
   NodeArray(const NodeArray &src){ this = src;}
   template<typename T_int> NodeArray(T_int count, T_int r1) : T(count * r1), m_range(r1){}
   template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2) : T(count * r1, r2), m_range(r1){}
   template<typename T_int> NodeArray(T_int count, T_int r1, T_int r2, T_int r3) : T(count * r1, r2, r3), m_range(r1){}
   
   T* operator[](int index){
      this.m_index = this.m_index * this.m_range + index;
      return &this;
   }
};


#define  MultiArray(type, size) MultiArray##size(type)
#define  MultiArray2(type) NodeArray<NodeArray<TailArray<type>>>
#define  MultiArray3(type) NodeArray<NodeArray<NodeArray<TailArray<type>>>>


template<typename T>
class MultiArrayCreate{
public:
   static MultiArray(T, 2) Size(int range_1, int range_2){
      return (MultiArray(T, 2)(range_1, range_2, 1));
   }
   static MultiArray(T, 3) Size(int range_1, int range_2, int range_3){  
      return (MultiArray(T, 3)(range_1, range_2, range_3, 1));
   }
};


void OnStart(){
   MultiArray(int, 2) arr_2 = MultiArrayCreate<int>::Size(4, 4);
   MultiArray(int, 3) arr_3 = MultiArrayCreate<int>::Size(4, 4, 4);
   
   arr_2[0][0] = 2233;
   arr_3[3][3][3] = 4455;
   PRINT(arr_2[0][0].value());
   PRINT(arr_3[3][3][3].value());
}
 

Boa tarde a todos!

Pode dizer-me como inserir uma imagem na descrição do guião no desenho e subsequente publicação no CodeBase?

Tenho apenas, por alguma razão, inserir vídeo do Youtube..., mas nenhum ícone para inserir uma imagem! :(

Obrigado de antemão! :)

 
gsl17:

Boa tarde a todos!

Pode dizer-me como inserir uma imagem na descrição do guião no desenho e subsequente publicação no CodeBase?

Tenho apenas, por alguma razão, inserir vídeo do Youtube..., mas nenhum ícone para inserir uma imagem! :(

Obrigado de antemão! :)

O botão de inserir imagemIlustração de botões está disponível para o utilizador, começando com uma classificação mínima. Obviamente não tem classificação suficiente para trabalhar com o botãoIlustração de botões.

 
Vladimir Karputov:

O botão de inserir imagem está disponível para o utilizador, começando com uma certa classificação mínima. Obviamente, não tem uma classificação suficiente para utilizar o botão.

Obrigado pelo esclarecimento.

É uma pena...

P.S. Sim, de facto, esta é a primeira vez que ponho um guião em CodeBase.

 
Bild 2390 mt 5 profiler on history trabalha com dados reais no.
 

Defeitos na função do modelo/na operação de cache da classe:
(fixado por MT5(build 2390)) ***(para cima) Comportamento indefinido, cria-se várias vezes um objecto complexo embrulhado com tipo interno "C" e acaba por ser um tipo de dados completamente diferente, talvez "B", talvez "int", o que se quiser...
(fixado por MT5(build 2390)) * Compile Error, bug ao passar um ponteiro de função como um argumento de modelo de ref. constante.
(fixado por MT5(build 2390)) * Compile Error, B<int> object pode ser criado depois do objecto B<void*> class, mas ocorre um erro de compilação se for feito antes.


Defeitos na função/classe do modelo de trabalho:
(fixado por MT5(build 2390)) **(para cima) Erro de Compilação, erro na tentativa de aceder à classe interna para parâmetro do modelo da função do modelo.
(fixado por MT5(build 2390)) **(acima) Erro de Compilação, bug na função de modelo, ponteiro passado dentro deconversão de tipo explícito comporta-se como uma classe, caso contrário como um ponteiro.
(não fixado pelo MT5(build 2390)) *** Erro de Compilação, a principal reivindicação do aviso de saída inadequado é "comportamento depreciado, a chamada de método oculto será desactivada numa futura versão do compilador MQL". A implementação actual está a disparar um canhão contra um pardal.
(não fixado pelo MT5(build 2390)) ** Compile Error, o erro diz respeito ao valor de retorno de uma função de modelo quando o valor de retorno é uma classe interna dentro de uma classe de modelo cujo tipo de parâmetro é definido pelo tipo de argumento da função de modelo.
(não fixado pelo MT5(build 2390)) ** Erro de compilação, espaço de nomes e erro de escopo no construtor de modelos quando se chama classe base quando o mesmo nome de classe é usado em herança e classe interna.
(não fixado pelo MT5(build 2390)) * Erro de Compilação, erro na chamada da função modelo com tipos de argumentos explícitos quando chamada de uma função não modelo sobrecarregada.
(não corrigido pelo MT5(build 2390)) Erro de Compilação, bug na definição de classe interna - nenhuma referência ao espaço de nomes global ao definir uma classe base.
(fixado por MT5(build 2390)) ** Compile Error, bug com geração de código de classe modelo quando se utiliza classe interna.
(fixado por MT5(build 2390)) ** Erro de compilação, erro no método de modelo/ geração de classe, o processo de substituição automática do parâmetro do modelo sai do scop para o código principal do programa.
(fixado por MT5(build 2390)) * Compile Error, bug com ausência de geração de código de classe de template quando a classe de template actua como valor de retorno para o método de template.
(fixado por MT5(build 2390)) * Compile Error, bug, quando a estrutura interna é passada para a função template, otipo de dados recebidos não pode ser utilizado como um tipo de dados de base para outra estrutura interna na classe template.
(fixado por MT5(build 2390)) * Compile Error, a verificação de nomes de tipos de modelos reutilizados não é executada quando se declara uma função de modelo dentro de uma classe de modelo, o que leva a um comportamento inesperado.
(fixado por MT5(build 2390)) Erro de Compilação, defeitos múltiplos relacionados com o retorno do objecto "no local criado" quando a classe/estrutura do modelo é o objecto.
(fixado por MT5(build 2368)) *( Não é um bug, é uma característica) no construtor da classe base é impossível realizar previsões datilográficas explícitas no ponteiro de fundição para objecto da classe base para ponteiro para a classe pai.
(não corrigido pelo MT5(build 2390)) (novo) Erro de Compilação quando se usa o modificador de acesso por defeito para herança na classe do modelo quando o parâmetro do modelo actua como classe base.
(não fixado pelo MT5(build 2390)) * (novo) Erro de Compilação, ao chamar uma declaração de atribuição através de uma referência explícita à classe base. O problema ocorre para uma classe modelo em que o parâmetro modelo actua como uma classe base.


Defeitos relacionados com a descoordenação de chamadas prioritárias para funções sobrecarregadas em MQL vs C++:
(fixado por MT5(build 2390)) **(acima) Erro de Compilação quando a primeira de funções de modelo sobrecarregadas utiliza uma classe base de modelo totalmente especializada e a segunda utiliza uma classe base de modelo não especializada.
(não fixado pelo MT5(build 2390)) ** Compile Error, ocorre um erro de compilação ao gerar código para uma função de modelo, apesar de haver uma função de modelo sobrecarregada com uma assinatura adequada para os parâmetros passados.
(não fixado pelo MT5(build 2390)) * Erro de Compilação, "chamada ambígua para função sobrecarregada" quando funções de modelo sobrecarregadas com diferentes números de parâmetros de modelo são chamadas.
(fixado por MT5(build 2390)) (corrigido por MT5(build 2390)). **(up) Compile Error, call priority of overloaded template functions actually depends on a type of template parameter which theoretically should not affect result of compilation.
(fixado por MT5(build 2390)) *** Erro de compilação ao herdar classes A <= B <= C <= D e implementar duas funções de sobrecarga, por exemplo uma do parâmetro A* e outra do parâmetro B*, depois a passagem de um objecto C* ou D* para tal função no MQL causa um erro de compilação.
(fixado por MT5(build 2390)) ** Tempo de execução, incoerência nas prioridades para chamadas de funções de modelo sobrecarregadas.
(Fixado por MT5(build 2390)) *** Tempo de execução, ao seleccionar uma função sobrecarregada apropriada para um argumento do tipo ponteiro, a função com conversão do tipo para ponteiro para pai em vez da classe base torna-se uma prioridade mais elevada.
(não fixado pelo MT5(build 2390)) *** (novo) Erro de Compilação, sobrecarga das prioridades da função de chamada de modelo.
(não fixado pelo MT5(build 2390)) ** (novo) Erro de Compilação, conversa de tipo implícito é utilizadaquando se chama uma função para um argumento com cor do tipo de dados, apesar de haver uma função de modelo de assinatura com cor do tipo de dados.
(não fixado pelo MT5(build 2390)) * (novo) Erro de Compilação, apesar da especialização explícita quando a função de modelo sobrecarregada é chamada, a função de modelo é chamada por defeito de qualquer forma, o que leva ao transbordamento de pilha...
(não fixado pelo MT5(build 2390)) * (novo)Erro de Compilação,erro de compilação quando uma função é chamada através do seu ponteiro, quando é utilizado um conjunto de apontadores para uma função.


Defeitos relacionados com o MetaEditor:
(não fixado por ME5(build 2390)) *** (novo) Depurador, a queda do ponto de ruptura nométodo de estruturaestática faz com que o terminal MT fique pendurado.
(não fixado em ME5(build 2390)) ** (novo) Compilação, a descrição do erro de compilação não pode caber no limite de 256 caracteres e é cortada, pelo que é impossível compreender que erro de tipo de dados ocorre porque a parte necessária foi cortada.
(não fixado em ME5(build 2390)) ** (novo) Debugger, StepInto (F11) e definir pontos de paragem não funcionam.
(não fixado em ME5(build 2390)) ** (novo) Depurador, após ser accionado um ponto de interrupção em vez de continuar a execução do código pressionando (F5), o mesmo ponto de interrupção é efectivamente accionado novamente sem executar qualquer código.
(não fixado em ME5(build 2390)) *(novo) Compilação, assinatura de parâmetro de modelo de função incorrecto em Descrição de Erro e Informação de Parâmetro.
(não fixado em ME5(build 2390)) * (novo) MetaEditor, a funcionalidade Substituir (Strl+H) não funciona para a funcionalidade incluída "Em selecção" juntamente com "Direcção para trás", quando a parte necessária da aplicação é seleccionada, não o código inteiro.


Defeitos relacionados com a execução lenta de funções, o optimizador de código funciona:
(fixado por MT5(build 2390)) **(acima) Tempo de execução, grande sobrecarga ao adicionar um elemento de cada vez a uma matriz usando o ArrayResize, apesar da memória estar reservada para eles, por exemplo, para estruturas até 7 vezes mais lentas.


Sugestões:
(novo) - adicionar à pesquisa/substituição ME por Projecto actual, porque durante a refactoring, percorrer cada um dos ficheiros e procurar a ocorrência não é de alguma forma bom.
Referência(nova) - em ME ao compilar para preencher as colunas vazias File, Line, Column com a informação apropriada sobre o ficheiro de origem, a partir do qual foi feita incluir.
link- sobre a introdução de suporte intellisense para a funcionalidade namespace baseada no trabalho intellisense para métodos estáticos em classes.
link- para fornecer a capacidade de passar variáveis literais e temporárias como argumentos da função const ref.
link- aomover ficheiros de projectos no separador Projecto, para ficheiros movidos que estão abertos e nos separadores ME, para actualizar automaticamente o seu caminho de localização.
link- para introduzir a funcionalidade de declaração de typedef em MQL.
link- sobre a possibilidade de forçar a geração de construtores de cópias por defeito e operadores de atribuição.

 
É uma pena que ME não mostre os caminhos do mqh conectável ao compilar, apenas os nomes.
 
Quando se mostra o histórico comercial no modo "Ordens e Acordos" é impossível ordenar por colunas. Devido a isto, alguns ofícios que acabam de ter lugar não vão até ao fim da lista, mas até ao meio.
 
fxsaber:

Um exemplo simples. Pretende ter um conjunto de MAU com períodos especificados.

Cada MAP é um objecto do mesmo tipo. É evidente que o MASK é inequivocamente especificado pelo período. Por conseguinte, é lógico torná-lo constante.


Outras línguas fazem simplesmente uma série de indicações. Na MQL, não temos essa liberdade.

Seria ilógico. Se não vai mudá-lo, não significa que tenha de o tornar constante. É suficiente tornar a variável privada.

Seria lógico se conseguisse algo com isso, mas só criou um problema para si próprio.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.04.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Sergey Dzyublik:

Sabe como são concebidos o optimizador e compilador MQL?
Como pode estar tão certo de que os campos constantes de tipos simples não são utilizados para este fim?

O optimista não tem nada a ver com isso.

Razão: