"모든 제어 경로가 값을 반환하는 것은 아닙니다" 오류

 

안녕하세요, 저는 시스템을 코딩하려고 하지만 컴파일 후 "모든 제어 경로가 값을 반환하는 것은 아닙니다"를 반환하고 두 번 클릭하면 다음 블록에 표시됩니다. 누군가 문제를 지적해 주시겠습니까?

미리 감사합니다

 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 :

안녕하세요, 저는 시스템을 코딩하려고 하지만 컴파일 후 "모든 제어 경로가 값을 반환하는 것은 아닙니다"를 반환하고 두 번 클릭하면 다음 블록에 표시됩니다. 누군가 문제를 지적해 주시겠습니까?

미리 감사합니다


문제 해결됨


#Property strict 제거

 
Siladeh :

문제 해결됨


#Property strict 제거


해결 방법입니다. 한 줄을 더 추가하십시오.

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


해결 방법입니다. 한 줄을 더 추가하십시오.


고마워 친구
 
또는 더 간단합니다.
 return ( sells> 0 );
// if(sells>0) return(true);                
// else     return(false);  // Add this line
 

WHRoeder - 귀하의 팁 덕분에 코드에서 더 많은 줄을 계속 제거하고 있습니다. GumRai와 똑같이 했을 것입니다. 감사해요!

 
GumRai :


해결 방법입니다. 한 줄을 더 추가하십시오.


안녕 GumRai , 그냥 대화를 위해 거기에 else는 필요하지 않죠? : )

   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 , 그냥 대화를 위해 거기에 else는 필요하지 않죠? : )


아니, 당신 말이 맞아.

WHRoeders는 귀하의 게시물보다 동일한 것을 달성하는 것이 훨씬 더 간단합니다.

 
GumRai :


아니, 당신 말이 맞아.

WHRoeders는 귀하의 게시물보다 동일한 것을 달성하는 것이 훨씬 더 간단합니다.


사실이지만 이와 같은 특정 상황에만 해당됩니다. 다른 방법은 조건의 수와 조건에 관계없이 더 일반적입니다. 둘 중 어느 것도 true를 반환하지 않으면 false를 반환합니다.

이것은 이 특정한 예에 대한 우아한 솔루션이라는 것을 인정해야 합니다.

 
thrdel :

...

그리고 당신이 사용하지 않는 경우 :

도움이 되기를 바랍니다.

조건이 다음과 같으므로 -1을 추가할 필요가 없습니다.
i < OrdersTotal ()
-1을 추가하면 배열의 1개 항목이 누락됩니다.