Да, с GlobalVariableGet пикантная ситуация получается. Может стоило бы ввести понятие MAX_INTEGER и пользоваться для ошибки им? Как говорится "чего не жалко", а то 0 всё-таки довольно популярное число. А если кто-то и доберётся до MAX_INTEGER то наверняка по ошибке :).
Мне думается, что все-таки нужно обнулять "last_error" внутри стандартных функций.
Иначе логика функции GetLastError() абсолютно искривляется.
Получается что использовать её в программе - ОПАСНО.
Опасно по той простой причине, что невозможно определить ТОЧНО, в каком месте программы произошел сбой и сделать соответствующий обработчик ошибки.
Я например достаточно долго искал ошибку в программе, пока не допёр, что ошибка не в моей программе, а в логике работы GetLastError, которая показывает "погоду" :(
Иначе логика функции GetLastError() абсолютно искривляется.
Получается что использовать её в программе - ОПАСНО.
Опасно по той простой причине, что невозможно определить ТОЧНО, в каком месте программы произошел сбой и сделать соответствующий обработчик ошибки.
Я например достаточно долго искал ошибку в программе, пока не допёр, что ошибка не в моей программе, а в логике работы GetLastError, которая показывает "погоду" :(
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как, например, определить была ли ошибка при вызове "GlobalVariableGet", если значение переменной = 0 ??
Вот пример кода:
//-------------------------------------------------------
GlobalVariableSet("-=TEST=-", 0);
int V[]; V[-1]=111; // генерируем ошибку
int iVal=GlobalVariableGet("-=TEST=-");
int err=GetLastError();
Print("GetLastError(), ERR=",err);
//-------------------------------------------------------
В журнале будет запись: "... GetLastError(), ERR=4002"
Получается, что вместо простого
if ( !err ) return ("НЕТ ОШИБКИ!")
нужно будет писать целый обработчик по кодам ошибок.
Ну или замедлять работу программы лишний раз вызывая GetLastError()
чтобы искуственно обнулить last_error.