"すべてのコントロールパスが値を返すわけではありません "エラー

 

こんにちは、私は自分のシステムをコーディングしようとしていますが、コンパイル後に "not allcontrol paths return a value" を返し、ダブルクリックすると次のブロックに表示されます、誰か問題を指摘してください。

よろしくお願いします。

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:

こんにちは、私は私のシステムをコーディングしようとしているが、コンパイル後に "すべてのコントロールパスは値を返しません "と返され、私はダブルクリックすると、次のブロックに表示され、誰かが問題を指摘してくださいすることができます。

ありがとうございました。


問題解決


プロパティの 厳密性を削除する

 
Siladeh:

問題解決


プロパティの厳密性を削除する


これは回避策で、1行追加します。

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


これは回避策で、1行追加します。


ありがとうございました。
 
あるいはもっと単純に、
return( sells>0 );
// if(sells>0) return(true);                
// else     return(false);  // Add this line
 

WHRoeder - あなたのヒントのおかげで、私のコードからさらに多くの行を削除し続けることができました。私もGumRaiと全く同じことをしたでしょう。ありがとうございます。

 
GumRai:


これは回避策で、1行追加します。


GumRaiさん、一応、話のネタとして、elseは要らないですよね?)

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

こんにちは、私は自分のシステムをコーディングしようとしていますが、コンパイル後に "not all control paths return a value" を返し、ダブルクリックすると次のブロックに表示されます、誰か問題を指摘してください。

よろしくお願いします。

OrderSelectは、結果を確認 しないと警告が出る場合があります。

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);
  }


それが役立つことを願って

 
thrdel:


GumRai さん、話の流れ上、elseは不要ですよね?)


いや、その通りです。

上のWHRoedersの投稿は、同じことを実現するためにさらにシンプルです。

 
GumRai:


いや、その通りです。

上のWHRoedersの投稿は、同じことを達成するためにさらに単純です。


しかし、このような特定の状況においてのみ有効です。もう一つの方法はもっと一般的で、いくつどんな条件があっても、そのどれもが真を返さなければ、偽を返します。

この特殊な例では、エレガントなソリューションであることは認めざるを得ません。

 
thrdel:

...

を使用しない場合は、:

お役に立てれば幸いです。

条件として、-1 を加える必要はありません。
i<OrdersTotal()
もし-1を足すと、配列の1項目が欠落します。