Erreurs, bugs, questions - page 1922

 
A100:

Erreur de compilation

Et sanstemplate<typename T> - ok... quelle est la différence ?

C'est les parenthèses supplémentaires dans la macro.

struct A {
        A(int) {}
};

template<typename T>
struct B {
        static A a;
};
template<typename T>
A B::a((0));

Si vous les enlevez, il compilera.

 
fxsaber:

C'est les parenthèses supplémentaires dans la macro.

Si vous les enlevez, il compilera.

Si vous supprimez le template<typename T>, il compilera également (même avec des parenthèses)
 
A100:

Les fichiers .log %AppData%\MetaQuotes\Terminal\...\MQL5\Logs\YYYYMMDD.log ne sont pas mis à jour rapidement.

La mise à jour ne se produit qu'après le redémarrage du terminal ou après avoir sélectionné le menu Affichage. Si vous ne redémarrez pas ou ne cliquez pas sur Aperçu, le fichier correspondant sera vide.

Auparavant, cela fonctionnait bien (même le fichier YYYYYMMDD.log ouvert dans MetaEditor était automatiquement mis à jour en quelques secondes après l'affichage des lignes dans l'onglet Experts) et aucune action supplémentaire non évidente n'était nécessaire.

IMHO, cela a toujours été le cas si la taille du journal est petite (il y avait des informations quelque part sur le forum concernant la taille à partir de laquelle le vidage du cache commence). J'ai toujours dû invoquer le menu contextuel pour initialiser le flush sur le disque.

 
Stanislav Korotky:

À mon avis, cela a toujours été le cas si la taille du journal est petite (il y avait des informations quelque part sur le forum concernant la taille à laquelle la réinitialisation du cache commence). Je devais toujours appeler le menu contextuel pour initialiser le flush sur le disque.

Je ne comprends pas bien le sens de votre IMHO. Prenez la version <= 1596 (32bit) et vérifiez (les sorties dans le fichier .log sont immédiates [5-10 secondes], même une ligne). Je l'ai vérifié il y a une minute.

[quel cache ? quel toujours ? il y avait quelque chose à propos de quelque chose quelque part !?!]

Il s'agit de l'onglet Experts et du dossier MQL5\Logs\.

 
A100:
Si vous supprimez le template<typename T>, il compilera aussi (même avec des parenthèses).

Eh bien, c'est une phrase de la catégorie "si vous enlevez tout, ça compilera".

Je parlais des causes de l'erreur exactement avec le modèle. La raison en est le comportement incorrect du compilateur lors de l'analyse d'une construction de modèle dans la situation de parenthèses supplémentaires. Toute personne qui a mis en œuvre les modèles peut immédiatement voir où se situe le problème et pourquoi il se produit.

 

Bonjour, j'ai une tâche pour afficher deux indicateurs : iMACD_1 en couleur, ligne de signal et iMACD_2 dans une fenêtre séparée, voici une partie du code :

J'ai fait l'indexation

   SetIndexBuffer(0,MACDBuffer_1,INDICATOR_DATA);
   SetIndexBuffer(1,buffer_color_histogram,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,Signal_Line,INDICATOR_DATA);
   SetIndexBuffer(3,MACDBuffer_2,INDICATOR_DATA);

Vous avez des indications sur les indicateurs

 handle_1=iMACD(name,period,fast_ema_period,slow_ema_period,signal_period,applied_price); 
 handle_2=iMACD(name_,period_,fast_ema_period_,slow_ema_period_,signal_period_,applied_price_);

(Et puis des merveilles)))

Théoriquement, cela devrait fonctionner pour afficher les indicateurs

      if(CopyBuffer(handle_1,0,0,values_to_copy,MACDBuffer_1)<0)return(0);
      if(CopyBuffer(handle_1,1,0,values_to_copy,Signal_Line)<0) return(0);
      if(CopyBuffer(handle_2,3,0,values_to_copy,MACDBuffer_2)<0) return(0);

Ça ne marche pas !

Mais cela fonctionne comme suit

      if(CopyBuffer(handle_1,0,0,values_to_copy,MACDBuffer_1)<0)return(0);
      if(CopyBuffer(handle_1,1,0,values_to_copy,Signal_Line)<0) return(0);
      if(CopyBuffer(handle_2,0,0,values_to_copy,MACDBuffer_2)<0) return(0);

Cela fonctionne, je n'arrive pas à comprendre quel est le problème avec le nombre de tampons indicateurs. Merci d'avance ! !!

 

Erreur de compilation.

template<typename T>
struct A {
        static int a1;
        static int a2;
};
template<typename T>
int A::a1;
template<typename T>
int A::a2;
struct B : A<int> {
        void f1() { Print( A<int>::a1 ); } //unresolved static variable 'A<int>::a1'
        void f2() { Print(         a2 ); } //unresolved static variable 'B::a2'
};

Et sanstemplate<typename T> - bien

 
vitrix:

Bonjour, j'ai une tâche pour afficher deux indicateurs : iMACD_1 en couleur, ligne de signal et iMACD_2 dans une fenêtre séparée, voici une partie du code :

J'ai fait l'indexation

Vous avez des indications sur les indicateurs

(Et puis des merveilles)))

Théoriquement, cela devrait fonctionner pour afficher les indicateurs

Ça ne marche pas !

Mais cela fonctionne comme suit

Cela fonctionne, je n'arrive pas à comprendre quel est le problème avec le nombre de tampons indicateurs. Merci d'avance ! !!


S'il vous plaît, la prochaine fois, rappelez-vous commentinsérer le code dans le message(votre message que j'ai corrigé).

Deuxièmement : l'indicateur iMACD n'a que deux tampons : "0" - MAIN_LINE, "1" - SIGNAL_LINE. Donc, pour obtenir les valeurs de l'indicateur, cela ressemblera à ceci :

   CopyBuffer(handle_iMACD,MAIN_LINE или SIGNAL_LINE,index - номер буфера с которого начинаем копирование,values_to_copy,buffer)
 
A100:

Erreur de compilation.

Et sanstemplate<typename T> - bien

template<typename T>
struct A {
        static int a1;
        static int a2;
};
template<typename T>
int A::a1 = 0;
template<typename T>
int A::a2 = 0;
struct B : A<int> {
        void f1() { Print( A<int>::a1 ); } //unresolved static variable 'A<int>::a1'
        void f2() { Print(         a2 ); } //unresolved static variable 'B::a2'
};
 
fxsaber:

L'aide indique que : Si aucune valeur initiale n'est spécifiée, les variables de classe de mémoire statique prennent une valeur initiale nulle. Et d'ailleurs, sans modèle, c'est bon.