Erreurs, bugs, questions - page 2809

 
Erreur de compilation :
template<typename T> class A {};
class B {
template<typename T> void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //Error: 'f' - member function already defined with different parameters

mais autrement :

template<typename T> class A {};
class B {
template<typename T> void f( A<T>& ) {} //нормально
};

bien. Quelle différence cela fait-il ?

template<typename T> class A {};
template<typename T>
class B {
                     void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //нормально

c'est bon aussi. Et le plus important, c'est qu'avant (dans la version 2085), tout se compilait normalement, sans erreur !

 

Bonjour, chers experts !

Pourriez-vous me dire s'il est possible de définir un point d'arrêt pour qu'il se déclenche à un certain moment (sur une certaine barre) pendant le débogage ? Par exemple, je veux que l'histoire avance à un certain endroit, et à cet endroit, un point d'arrêt se déclencherait, et je pourrais passer par le débogueur sur la barre dont j'ai besoin.

 

J'ai commencé un EA dans le testeur, le filet. Je n'ai pas beaucoup travaillé avec les limites, ma question concerne la limite d'achat, avec inversion de position.
Est-ce qu'ils passent vraiment du bon côté ou cela dépend du courtier ? Ou est-ce la mauvaise chose dans le testeur ?

Et pour une raison quelconque, la ligne de la position de vente ne s'est pas arrêtée à la limite abaissée, mais a dépassé le bord de l'écran.


 
Il y a une commande "DatabaseImport", dans la documentation à l'explication des paramètres flags il n'y a pas ces mêmes flags. J'ai essayé à la fois "0" et les paramètres de DatabaseExport, la compilation se fait, mais l'exécution renvoie l'erreur 5131. Il n'y a pas d'erreur de ce type dans la documentation. Quelqu'un sait-il à quoi correspond cette erreur ? Quel est le problème avec la ligne ;
DatabaseImport(db,"hist",FilenameHist,DATABASE_IMPORT_HEADER | DATABASE_IMPORT_CRLF | DATABASE_IMPORT_APPEND,";",0,"");
?
2. Pourquoi la ligne
         i=DatabaseExport(db,"select * from hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
travaux et
i=DatabaseExport(db,"hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
pas ? Avec ce que dit la documentation
long  DatabaseExport( 
   int           database,           // хендл базы данных, полученный в DatabaseOpen 
   const string  table_or_sql,       // 




имя таблицы  или SQL-запрос 
   const string  filename,           // имя CSV-файла для экспорта данных 
   uint          flags,              // комбинация флагов 
   const string  separator           // разделитель данных в CSV-файле 
   );
 

c'est-à-dire que le nom de la table doit également être reconnu ! Qu'est-ce qui ne va pas ?


w.s. Messieurs les développeurs quel dixième d'œil devrait deviner que la table où l'importation sera faite ne devrait pas exister ?? et pourquoi avez-vous besoin d'exporter l'importation si le dossier dans lequel vous pouvez sauvegardermql5/files est effacé au démarrage ? Comment travailler avec un dossier permanent ? Ou est-il toujours nécessaire de commencer par le débogage et d'avoir le temps d'insérer le fichier nécessaire avant l'initialisation ? Qu'est-ce que ....
 
AlexInRush:

Bonjour, chers experts !

Pourriez-vous me dire s'il est possible de définir un point d'arrêt pour qu'il se déclenche à un certain moment (sur une certaine barre) pendant le débogage ? Par exemple, je veux que l'histoire avance à un certain endroit, et à cet endroit, un point d'arrêt se déclencherait, et je pourrais passer par le débogueur sur la barre dont j'ai besoin.

Dans le testeur de stratégie, juste après l'avoir exécuté, vous faites une pause et il y a un champ sur la droite appelé "Scroll to". Le champ le plus à droite est celui où vous entrez l'heure à laquelle vous voulez courir. Ainsi, vous vous arrêtez au moment où vous en avez besoin, puis vous placez un point d'arrêt dans le code et en gardez la trace.
 
Alexandr Koptelov:
Il y a une commande "DatabaseImport", dans la documentation à l'explication des paramètres flags il n'y a pas ces mêmes flags. J'ai essayé à la fois "0" et les paramètres de DatabaseExport, la compilation se fait, mais à l'exécution retourne une erreur 5131. Il n'y a pas d'erreur de ce type dans la documentation. Quelqu'un sait-il à quoi correspond cette erreur ? Quel est le problème avec la ligne ; ?
2. Pourquoi la ligne fonctionne-t-elle et pas ? Avec ce que dit la documentation

c'est-à-dire que le nom de la table doit également être reconnu ! Qu'est-ce qu'il y a ?


s.w. Messieurs les développeurs quel dixième œil devrait deviner que la table dans laquelle l'importation sera effectuée ne devrait pas exister ? et pourquoi avez-vous besoin d'exporter l'importation du tout si le dossier dans lequel vous pouvez sauvegardermql5/filesest effacé au démarrage? Comment travailler avec un dossier permanent ? Ou est-il toujours nécessaire de commencer par le débogage et d'avoir le temps d'insérer le fichier nécessaire avant l'initialisation ? Qu'est-ce que ....

Travaillez dans un testeur ou un débogueur avec la base placée dans un dossier partagé.

 
AlexInRush:

Bonjour, chers experts !

Pourriez-vous me dire s'il est possible de définir un point d'arrêt pour qu'il se déclenche à un certain moment (sur une certaine barre) pendant le débogage ? Par exemple, je veux que l'histoire soit active jusqu'à un certain endroit et qu'un point d'arrêt se déclenche à cet endroit, afin que je puisse passer par le débogueur sur la barre dont j'ai besoin.

Définir la condition

if(TimeCurrent() == nnnTime)
  DebugBreak();
et commencer le débogage. Dès que le temps atteint l'heure spécifiée, le débogage s'arrête. Après toutes les manipulations, appuyez sur Shift+F11 pour continuer le test.
 

N'y a-t-il aucun moyen d'activer l'impression en mode d'optimisation? L'option "Journaux d'optimisation complets" est activée, mais seule l'impression de OnInit apparaît dans les journaux, alors que j'en ai besoin pour OnTester, par exemple.

 
Erreur de compilation
#define  MACRO( X ) aaa##X = X
#define  bbb  5
void OnStart()
{
    int MACRO(         bbb );
    printf( "%d",   aaabbb ); //Error: 'aaabbb' - undeclared identifier
}

Et en C++, c'est bon. Le ## a une priorité plus élevée - bbb est substitué en premier, et ensuite bbb est remplacé par 5, ce qui n'est pas la façon dont cela devrait se terminer :

    int aaa5 = 5; //неправильно (*)

C'est comme ça que ça doit être :

    int aaabbb = 5; //правильно (**)

En raison de cette erreur, une opération de routine ne peut pas être remplacée par une macro. (*) peut être obtenu par un autre formulaire d'enregistrement si nécessaire, mais (**) ne peut être obtenu dans MQL d'aucune façon

 
A100:

## a une priorité plus élevée

À mon avis, il ne s'agit même pas de priorité, mais de l'ordre de substitution des macros, qui est fondamentalement défectueux :

#define  aaa
#define  XY( x, y )      x##y
#define  XY2( y )        XY( aaa, y )
void OnStart()
{
        int XY2( bbb ) = 5;
        Print( aaabbb ); //Error: 'aaabbb' - undeclared identifier
}
et l'on s'attendait à ce qu'il soit correct - comme dans C++.
Raison: