Erreurs, bugs, questions - page 1495

 
Artem Prischepa:
Je crains que vous ne m'ayez mal compris. Mon signal n'a pas eu besoin de publicité depuis longtemps. J'essaie de comprendre par moi-même les aspects techniques du service que j'utilise. Néanmoins, je suis le premier à être contacté.
Dans ce cas, étudiez les questions de laFAQ sur le service Signaux(premier message).
 

Est-ce un bug ou une mauvaise compréhension de la langue ?

void Func( int & Tmp )
{
  return;
}

void OnStart( void )
{
  int Tmp1, Tmp2;
  
  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected 
    
  return;
}
 
zaskok3:

Il s'agit d'un bug ou de ma mauvaise compréhension de la langue :

Le résultat d'une expression ternaire est le contenu de la variable Tmp1 ou de la variable Tmp2.

Et la fonction Func ne devrait pas passer le résultat de l'expression, comme vous l'avez fait, mais une référence

 

Comment faire face à ce problème ?

Après avoir installé l'Expert Advisor sur le graphique qui construit les graphiques RENCO, le terminal se bloque en permanence.

Le redémarrage du terminal n'aide pas. J'ai supprimé l'Expert du dossier - cela n'a rien changé !

Que faire ?

win7/64 mt4/950

 
Slawa:

Le résultat d'une expression d'opération ternaire est le contenu de la variable Tmp1 ou de la variable Tmp2.

Est-ce le contenu et non la variable elle-même ? C'est probablement là qu'est apparue ma mauvaise compréhension. Merci !

J'ai essayé l'alternative ternaire et ça n'a pas marché :

//  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected
  
  // Так не пашет
  (0 > 1) ? Func(Tmp1) : Func(Tmp2); // 'Func' - expression of 'void' type is illegal
  
  // Так, конечно, работает
  if (0 > 1)
    Func(Tmp1);
  else
    Func(Tmp2);

Le ternaire est ici sans affectation.

 
zaskok3:

Exactement le contenu, pas la variable elle-même ? Apparemment, c'est là que ma mauvaise compréhension s'est manifestée. Merci !

J'ai essayé l'alternative ternaire, ça n'a pas marché :

Ternaire ici sans affectation, cependant.

Le résultat d'une opération ternaire est soit le résultat de la première expression, soit le résultat de la deuxième expression, selon le résultat de l'expression conditionnelle.

Le résultat doit être assigné quelque part (ou être un membre d'une autre expression) parce qu'il est rvalue

C'est à peu près la même chose que d'écrire simplement

int a=1;
int b=2;

a + b;
 

Slawa:

Le résultat doit être assigné quelque part (ou être un membre d'une autre expression) parce que c'est une rvalue.

C'est à peu près la même chose que d'écrire

Si je remplace void Func par int Func, c'est vraiment le même résultat. C'est une déception avec le vide. C'est juste à cause de la phrase surlignée ?
 
zaskok3:
Si je remplace void Func par int Func, le résultat est bien le même. Le vide est une déception. C'est juste à cause de la phrase surlignée ?
Oui
 
Slawa:
Oui
Je l'ai. Merci pour l'éducation !
 
Aleksandr Novikov:

Comment faire face à ce problème ?

Après avoir installé l'Expert Advisor sur le graphique qui construit les graphiques RENCO, le terminal se bloque en permanence.

Le redémarrage du terminal n'aide pas. J'ai supprimé l'Expert du dossier - cela n'a rien changé !

Que faire ?

win7/64 mt4/950

Essayez de supprimer tous les fichiers avec l'extension CHR du dossier <catalogue terminal>\profils\default\\\
Raison: