VBAG писал (а) >>
Вдруг откуда ни возьмись, при работе в тестере стала появляться ошибка 4002. Читаем матчасть
. . .
Вдруг откуда ни возьмись, при работе в тестере стала появляться ошибка 4002. Читаем матчасть
ERR_ARRAY_INDEX_OUT_OF_RANGE | 4002 | Индекс массива - вне диапазона |
Предполагаю, что проблема в следующем.
Вы объявляете массив из десяти элементов
double A[10] double B[10]
Затем внутри функции b() обращаетесь к индексу [10], хотя при заданном размере массива индексация должна производится от 0 до 9.
При доступе за пределы массива исполняющая подсистема генерирует ошибку ERR_ARRAY_INDEX_OUT_OF_RANGE (4002).
Функция GetLastError() запоминает код последней ошибки в Вашем случае это - 4002.
При вызове GetLastError() внутри функции a() возвращается не ошибка выполнения функции ArrayInitialize(),
а код ошибки, который сохранился при попытке обратиться за пределы массива внутри функции b().
Ай да, спасибочки, люди добрые! Шайтан попутал. На ровном месте, что называется - ... и упал.
Спасибо. Юзал те же грабли, теперь понял.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
После паручасовых исследований и упрощений выявил очень интересный феномен работы тестера:
- на появление ошибки при инициализации массива А (функция а)влияет работа массива B(в функции в);
- причем, если функции а и в поменять местами, то ошибка со второго тика;
2008.08.25 03:50:02 2007.01.04 01:19 TEST_ArrayInialize GBPUSD,H1: ArrayInitialize(A,0.0) = 4002 Количество инициализированных элементов = 10
2008.08.25 03:50:02 2007.01.04 01:16 TEST_ArrayInialize GBPUSD,H1: ArrayInitialize(A,0.0) = 4002 Количество инициализированных элементов = 10
2008.08.25 03:50:02 2007.01.04 01:16 TEST_ArrayInialize GBPUSD,H1: ArrayInitialize(A,0.0) = 4002 Количество инициализированных элементов = 10
2008.08.25 03:49:57 2007.01.04 00:00 TEST_ArrayInialize GBPUSD,H1: ArrayInitialize(A,0.0) = 0 Количество инициализированных элементов = 10
2008.08.25 03:49:57 TEST_ArrayInialize started for testing
- причем, если в функции в добавить еще переменную(функция с), оставив логику работы прежней, то ошибка пропадает.
Можно предположить, что работа функции в не совсем корректна(хотя работает исправно), но не должна в принципе, по-хорошему одна функция влиять на результаты работы другой!
Может где и ошибаюсь, но решил сообщить. Возможно разработчикам пригодится, а кто-нибудь, возможно, сэкономит время и нерв.