"不是所有的控制路径都会返回一个值 "错误

 

你好,我正在尝试对我的系统进行编码,但是在编译后,它返回了 "不是所有的控制 路径都返回一个值",当我双击时,它显示在下面的块中,谁能指出这个问题。

谢谢你

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,只是为了谈话的目的,你真的不需要在那里的其他东西,对吗?)

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

你好,我正在尝试对我的系统进行编码,但是在编译后,它返回了 "不是所有的控制路径都返回一个值",当我双击时,它显示在下面的块中,谁能指出这个问题。

谢谢你的帮助

如果你不检查 结果,你可能会收到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,只是为了谈话的目的,你真的不需要其他的东西在那里,对吗?)


不,你是对的。

你上面的WHRoeders的帖子甚至更简单,可以实现同样的事情

 
GumRai:


不,你是对的。

你上面的WHRoeders的帖子甚至更简单,可以实现同样的事情


没错,但只适用于像这样的特殊情况。另一种方式更普遍,不管有多少个条件,有哪些条件,如果没有一个条件返回真,就会返回假。

必须承认,对于这个特定的例子,这是一个优雅的解决方案。

 
thrdel:

...

而如果你不使用:

希望能有所帮助

你不需要添加-1,因为条件是
i<OrdersTotal()
如果你加入-1,你就会错过数组中的1个项目。