Erreur "Tous les chemins de contrôle ne renvoient pas une valeur".

 

Bonjour, j'essaie de coder mon système mais après la compilation, il renvoie le message "not all control paths return a value" et lorsque je double-clique, il montre qu'il se trouve dans le bloc suivant, quelqu'un peut-il m'indiquer le problème ?

Merci d'avance

bool CalculateCurrentSellOrders(string symbol)
  {
   int sells=0;
   for (int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_SELL) sells++;
        }
      }
   if(sells>0) return(true);
  }
 
Siladeh:

Bonjour, j'essaie de coder mon système mais après la compilation, il renvoie le message "not all control paths return a value" et lorsque je double-clique sur le bloc suivant, quelqu'un peut-il m'indiquer le problème ?

Merci d'avance


Problème résolu


Supprimer #Property strict

 
Siladeh:

Problème résolu


Supprimer #Property strict


C'est une solution de contournement, ajoutez une ligne supplémentaire

   if(sells>0) return(true);
   else     return(false);  // Add this line
 
GumRai:


C'est une solution de contournement, ajoutez une ligne supplémentaire.


Merci, mon pote
 
Ou plus simplement :
return( sells>0 );
// if(sells>0) return(true);                
// else     return(false);  // Add this line
 

WHRoeder - Je continue à supprimer de nouvelles lignes de mon code grâce à vos conseils. J'aurais fait exactement la même chose que GumRai. Merci !

 
GumRai:


C'est une solution de contournement, ajoutez une ligne supplémentaire.


Salut GumRai, juste pour le bien de la conversation, tu n'as pas vraiment besoin de l'autre ligne, n'est-ce pas ? )

   if(sells>0) return(true);
   return(false); 
 
Siladeh:

Bonjour, j'essaie de coder mon système mais après la compilation, il renvoie le message "not all control paths return a value" et lorsque je double-clique, il montre qu'il se trouve dans le bloc suivant, quelqu'un peut-il m'indiquer le problème ?

Merci d'avance

Vous pouvez recevoir un avertissement pour OrderSelect si vous ne vérifiez pas le résultat.

bool CalculateCurrentSellOrders(string symbol)
  {
   int sells=0;
   for (int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
        Print("OrderSelect() failed with error : "+GetLastError());
      if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MAGICMA)continue;
      if(OrderType()==OP_SELL) sells++;
     }
   if(sells>0) return(true);
   return(false);
  }


J'espère que cela vous aidera

 
thrdel:


Bonjour GumRai, juste pour le plaisir de la conversation, vous n'avez pas vraiment besoin du "autre", n'est-ce pas ? )


Non, tu as raison.

Le message de WHRoeders au-dessus du vôtre est encore plus simple pour obtenir la même chose.

 
GumRai:


Non, vous avez raison.

Le message de WHRoeders au-dessus du vôtre est encore plus simple pour obtenir la même chose.


Vrai, mais seulement pour des situations particulières comme celle-ci. L'autre façon est plus générale, peu importe le nombre et la nature des conditions, si aucune d'entre elles ne renvoie vrai, elle renverra faux.

C'est, je dois l'admettre, une solution élégante pour cet exemple particulier.

 
thrdel:

...

et si vous n'utilisez pas :

J'espère que cela vous aidera

Vous n'avez pas besoin d'ajouter -1 car la condition est la suivante
i<OrdersTotal()
Si vous ajoutez -1, il vous manque un élément du tableau.