Eugene (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Потенциальная проблема с if, Потенциальная проблема с логическим оператором или скрытая ошибка
 
Здравствуйте!

Столкнулся со следующей проблемой:
Есть код, который, в частности, содержит фрагмент

  if((Server_Time_var-Registration_Time)>Time_Criterium_for_Bad_Deal)
    if(Order_Status=="ACTIVE" )
      kill_order()
    end if
  end if

Этот код успешно работает полгода, причем этот кусок многократно задействован,
и, казалось бы, проверен (т.е. он работал так как и ожидалось и было нужно).
В последние три дня он вылетает с формулировкой

Произошла ошибка при расчете портфеля "Trader",
идентификатор организации "XXX", сообщение об ошибке
"File: Functions.qpl, line: 386. Expected symbol ). [ ((SERVER_TIME_VAR-REGISTRATION_TIME)>TIME_CRITERIUM_FOR_BAD_DEAL) ] "

Количество скобок правильное. Что может означать это сообщение?

В отладчике это место ловить долго, поэтому расставил сигнальные сообщения, чтобы увидеть точку останова

 WRITELN(Log_File_Name, "Ok 6a: " & Server_Time_var & "    " & time_count)
  if((Server_Time_var-Registration_Time)>Time_Criterium_for_Bad_Deal)
 WRITELN(Log_File_Name, "Ok 6b: " & Server_Time_var & "    " & time_count)
    if(Order_Status=="ACTIVE" )
 WRITELN(Log_File_Name, "Ok 6c: " & Server_Time_var & "    " & time_count)
      kill_order()
 WRITELN(Log_File_Name, "Ok 6d: " & Server_Time_var & "    " & time_count)
    end if
 WRITELN(Log_File_Name, "Ok 6e: " & Server_Time_var & "    " & time_count)
  end if

Видно, что вылет действительно происходит после Ок 6a, но до Ок 6b

Привел этот кусок к следующему виду
 Time_Difference_var=(Server_Time_var-Registration_Time)
  if(Time_Difference_var>Time_Criterium_for_Bad_Deal)
    if(Order_Status=="ACTIVE")
      kill_order()
    end if
  end if

После чего, ошибка в этом месте исчезла и переместилась к другому оператору if в другой функции.

Это, видимо, какая-то наведенная ошибка, но я не знаю какая. Может быть где-то требуется явное приведение
типа, а я этого не сделал.
Не приходилось ли Вам сталкиваться ранее с такой проблемой?
Симптомами какого типа ошибок может быть такое поведение?

С уважением,
Евгений
Страницы: 1
Наверх