Здравствуйте!
Столкнулся со следующей проблемой:
Есть код, который, в частности, содержит фрагмент
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 в другой функции.
Это, видимо, какая-то наведенная ошибка, но я не знаю какая. Может быть где-то требуется явное приведение
типа, а я этого не сделал.
Не приходилось ли Вам сталкиваться ранее с такой проблемой?
Симптомами какого типа ошибок может быть такое поведение?
С уважением,
Евгений
Столкнулся со следующей проблемой:
Есть код, который, в частности, содержит фрагмент
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 в другой функции.
Это, видимо, какая-то наведенная ошибка, но я не знаю какая. Может быть где-то требуется явное приведение
типа, а я этого не сделал.
Не приходилось ли Вам сталкиваться ранее с такой проблемой?
Симптомами какого типа ошибок может быть такое поведение?
С уважением,
Евгений