Erreurs, bugs, questions - page 2662

 
Le forum déforme le formatage du code, il n'est pas possible de le corriger.
 
Il s'avère que l'ajout de parenthèses a un effet miraculeux pour résoudre les problèmes décrits ci-dessus:

class A{};

template<typename T>
class B{
public:
   B(int &){}
   B(long){}
   B(int, int, int){};  
   B(const B&){}
   B(const A*){}
};

// template class type
B<A*> test_b_class_class(){
   B<A*> b(1);
   int x = 22;
   
   return ( B<A*>(1));             // Fixed Compile Error: ambiguous call to overloaded function with the same parameters: "B(long)" and "B(const A*)"
   return ( B<A*>(1,2,3));         // Fixed Compile Error: only one argument is acceptable, argument should be castable to int
   return ( B<A*>(x));             // Fixed Compile Error: argument is passed by value instead of by reference.
   return ( B<A*>((A*)NULL));      // Fixed Compile Error: 'int' - invalid cast operation        
   return ( B<B<B<long>>>(1));     // Fixed Compile Error: OK, template parameter type does not provide any effort on compilation result
   
   return b;
};

B<A*>* test_b_ptr_ptr(){
   B<A*> b(1);
   
   return &( B<A*>(1));            // Fixed Compile Error: '&' - illegal operation use
   return &b;                 
};


void OnStart (){    
   // template class type
   B<A*> b0 = test_b_class_class();
   B<A*>* b_ptr = test_b_ptr_ptr();
}
 
Sergey Dzyublik:
Il s'avère que l'ajout de parenthèses a un effet miraculeux pour résoudre les problèmes décrits ci-dessus:

C'est la seule façon dont j'écris.

 
Bug MT5 (build 2345) erreur de compilation pour la valeur de retour d'une fonction template lorsque la valeur de retour est une classe interne située à l'intérieur d'une classe template dont le type de paramètre est donné par le type d'argument de la fonction template :

template<typename T>
class A{
public:
   class B{
   public:
      B(){};
      B(B&){};
   };
   
   A(){};
   A(A&){}
};

class C{
public:
   class D{
   public:
      D(){}
      D(D&){}
   };
};


template<typename T>
A<int>::B* test_b_ptr(const T n){             //OK
   A<T>::B* ptr = new A<int>::B();
   return ptr;
}

template<typename T>
A<int>::B test_b_in_place_class(const T n){   //OK
   return (A<T>::B());
}

template<typename T>
A<int>::B* test_b_in_place_ptr(const T n){    //OK
   return &(A<T>::B());
}


template<typename T>
A<T> test_a_template(const T n){              //OK
   A<T> a;
   return a;
}

template<typename T>
C::D test_d(const T n){                       //OK
   C::D d;
   return d;
}

template<typename T>
A<T>::B test_b_template(const T n){          //'A' - unexpected token, probably type is missing? 
   A<T>::B b;
   return b;
}



void OnStart (){ 
   test_b_ptr(1);
   test_b_in_place_class(1);
   test_b_in_place_ptr(1);
   
   
   test_a_template(1);
   test_d(1);
   test_b_template(1);                       // Compile Error
}
 
// "MetaTrader 5\MQL5\Files\Reports\2020.03.01 03.43.46ExpertName (琼㹤⸱㠰㐹㰷琯㹤琼㹤⼼摴㰾摴ㄾ〮ㄹ㔷⼼摴㰾摴㈾㄰⸹㠰ㄮ‴㈰〺㨰〰ㄮ㐱⼼摴㰾摴ㄾ〮〹㐵⼼摴㰾摴㰾琯㹤琼㹤⼼摴㰾摴㰾琯㹤琼㹤㰰琯㹤琼㹤⼼摴㰾摴㰾琯㹤琼㹤⼼摴㰾摴 - )\"

Veuillez copier ce texte (extrait du journal du terminal) dans ME, déplacez le curseur jusqu'à la fin de la ligne et essayez de supprimer des caractères à l'aide de la touche BackSpace. J'ai un bug reproductible.

Sur l'animation, notez la position du curseur. J'appuie sur BackSpace et cela supprime les caractères qui sont éloignés du curseur.


ZZY Tout va bien dans Notepad, mais pas dans ME.

Chaîne de recherche: Uluchshenie 012.
 
fxsaber:

Veuillez copier ce texte (extrait du journal du terminal) dans ME, déplacez le curseur jusqu'à la fin de la ligne et essayez de supprimer des caractères à l'aide de la touche BackSpace. J'ai un bug reproductible.


ZY tout va bien dans Notepad, pas dans ME.

Dans ME Win10-64 aucun problème supprimé

Je pense avoir tout copié, j'ai les derniers caractères :

摴 - )\"

ZY : il y a une astuce dans ME, j'ai un fichier source .mql4/mql5 de 50 KB, sur les forums le même code prendra 5-6 KB, je pense que l'astuce est dans l'encodage Unicode-"not Unicode" - je ne me rappelle pas déjà, où quelqu'un a discuté


UPD : menu ME : fichier - enregistrer sous - en bas de l'encodage, je mets par défaut Unicode

 
Igor Makanu:

UPD : Menu ME : fichier - enregistrer sous - encodage du bas, mon défaut est Unicode.

Même chose en bas.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

fxsaber, 2020.03.01 16:10

J'essaie d'ouvrir une animation et de faire attention à la position du curseur. J'appuie sur BackSpace et je supprime les caractères qui sont loin du curseur.

 
fxsaber:

Veuillez copier ce texte (extrait du journal du terminal) dans ME, déplacez le curseur jusqu'à la fin de la ligne et essayez de supprimer des caractères à l'aide de la touche BackSpace. J'ai un bug reproductible.

Dans l'animation, notez la position du curseur. J'appuie sur BackSpace et cela supprime les caractères qui sont éloignés du curseur.


ZY Dans Notepad, c'est bon, dans ME, ça ne l'est pas.

Chaîne de recherche: Uluchshenie 012.

J'ai eu le même problème récemment. Seulement, j'ai aussi perdu le curseur. J'ai redémarré ME, ça ne s'est pas reproduit. Je pensais qu'il y avait un problème avec la fenêtre.
 
Vladislav Andruschenko:
J'ai redémarré ME, et ça ne s'est jamais reproduit.

Le redémarrage n'aide pas.

 
Vous avez un sérieux bug dans le calcul des marchés boursiers et vous ne vous en souciez pas, et il n'est pas clair si le problème passe inaperçu volontairement ou accidentellement.
Raison: