Search code examples
mql4

mql4 } not all control paths return a value


I have taken this function from another mql4 script. The other script compiles absolutely fine with no error. Strangely, now that I have copied this function into my script I get the error } not all control paths return a value

I understand the concept of return a value but not sure when there is a compile difference between the scripts

int ModifyOrder(int ord_ticket,double op, double price,double tp, color mColor)
{
    int CloseCnt, err;

    CloseCnt=0;
    while (CloseCnt < 3)
    {
       if (OrderModify(ord_ticket,op,price,tp,0,mColor))
       {
         CloseCnt = 3;
       }
       else
       {
          err=GetLastError();
          Print(CloseCnt," Error modifying order : (", err , ") " + ErrorDescription(err));
         if (err>0) CloseCnt++;
       }
    }
}

Solution

  • Most likely the difference is in #property strict. if using strict mode, you have to redeclare local variables, return value from every function (except void, of course) and some other differences. In your example the function has to be ended with return CloseCnt; or maybe something else.

    No way to declare non-strict mode - simply do not declare the strict one. Once you declared it, it is applied to that file, and included into other files if importing.