Скачать MetaTrader 5

Ошибки 4008 и 4200

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114293
Forex Trader  
Уважаемые разработчики данный кусок кода
int Buy[1];
int Sell[1];

.....

int init()

{
ArrayInitialize(Buy,0);
ArrayInitialize(Sell,0);
}

.....
if(ArraySize(Buy)>0) ArrayResize(Buy,0);
Print("проверка бай "+GetLastError());
if(ArraySize(Sell)>0) ArrayResize(Sell,0);
Print("проверка сел "+GetLastError());
.....



иной раз возвращает в логе после Print("проверка бай "+GetLastError()); коды ошибок 4008 и 4200, а после практически такого же вызова if(ArraySize(Sell)>0) ArrayResize(Sell,0); эта ошибка не появляется. Ну с ошибкой 4200 еще можно покапаться посмотреть мож и правда чтото отдно и тоже делаю несколько раз(хотя сказано про объект на объект больше всего похож массив, но я его не создаю а лишь меняю размер ), а вот 4008 не понимаю что значит "неинициализированная строка".
Быть может в MQL4 не бывает массивов с длинной 0.
В принципе даже с этими ошибками все вроде работает как надо, но хотелось бы выяснит что нетак.

Forex Trader
114293
Forex Trader  
Не все функции обнуляют значение GetLastError(), даже если успешно завершили работу.
Об этом, кстати, сказано в хелпе ;)

Я тоже натыкался на эту проблему, и тоже после отсутствующей проверки GetLastError() после работы с объектом.

Чтобы проверить ошибку при работе с массивами, добавь после первых точек (.....) вызов GetLastError() - это обнулит его, если он не "пустой". Последующий вызов даст правильный ответ ;)
Forex Trader
114293
Forex Trader  
Да действительно так и получилось, спасибо, поставил перед точками и вылетела таже ошибка, но не все просто, скажем так, это были первые строки в вызываемой функции, а вызывается она у меня много раз во многих местах, так что теперь буду капаться искать после чего возникает ошибка.
Мне просто не ясно что разработчики хотели сказать фразой неиницилизированная строка, ну да ладно пока еще совсем в тупик не зашел буду копаться сам, еще раз спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий