Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода - страница 28

 
билд 2665 профилировщик зависает...
 

На старых билдах данный код корректно работал, возвращал "0".

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   double arr_N[]= {1,2,3,4,5};

   int Zer_index=ArrayBsearch(arr_N,0);
   Print("Zer_index=",Zer_index);
}
//+------------------------------------------------------------------+


теперь выдает -1

2020.10.30 00:05:49.100 Test_ArrayBsearch (Si-12.20,M1) Zer_index=-1

что противоречит хэлпу

Возвращаемое значение

Возвращает индекс найденного элемента. Если искомое значение не найдено, то возвращает индекс ближайшего по значению элемента.

Прошу разработчиков внести ясность, и сообщать о подобных изменениях - неприятно, когда старый код перестает работать.

 

Вообще очень сильно обижает молчаливое игнорирование сообщений об ошибках.

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

 
Aleksey Vyazmikin:

что противоречит хэлпу

Возвращает индекс найденного элемента.
Если искомое значение не найдено, то возвращает индекс ближайшего по значению элемента.

А если:

void OnStart()
{
   double arr_N[]= {1,3};
   int Zer_index=ArrayBsearch(arr_N,2);
   Print("Zer_index=",Zer_index);
}

то какой результат ожидался? Что ближе к 2 ? 1 или 3 ?

 
A100:

А если:

то какой результат ожидался? Что ближе к 2 ? 1 или 3 ?

Это не ко мне вопрос, что ближе. Но раз предусмотрено, что массив должен быть в начале упорядочен, то берется число левее, т.е. 1.

Всё это должно быть прописано в хэлпе.

А может и 2, если применить округление. Это вопрос описания.

 
Aleksey Vyazmikin:

Это не ко мне вопрос, что ближе. Но раз предусмотрено, что массив должен быть в начале упорядочен, то берется число левее, т.е. 1.

Всё это должно быть прописано в хэлпе.

Согласен, но раз все четко не прописано, то и нет смысла пользоваться такой функцией. Вы ожидаете, что левее, а по факту возвращается индекс правее

 
A100:

Согласен, но раз все четко не прописано, то и нет смысла пользоваться такой функцией. Вы ожидаете, что левее, а по факту возвращается индекс правее

Я вообще использовал для поиска нуля в массиве с положительными числами.

Дело не в этом, а в том, что раньше работало, потом перестало, и если поменяли логику - то надо сообщить, иначе исправить как работало раньше.

 
Aleksey Vyazmikin:

Я вообще использовал для поиска нуля в массиве с положительными числами.

Дело не в этом, а в том, что раньше работало, потом перестало, и если поменяли логику - то надо сообщить, иначе исправить как работало раньше.

Так оно и сейчас работает. Просто в Документации не указано как интерпретируются значения за границами диапазона. Также не указано в каком случае возвращается -1. Соответственно непонятно правильно она работает или нет. 

 
A100:

Так оно и сейчас работает. Просто в Документации не указано как интерпретируются значения за границами диапазона. Также не указано в каком случае возвращается -1. Соответственно непонятно правильно она работает или нет

Раньше работало иначе, и -1 не возвращалось в моих режимах.

 
Aleksey Vyazmikin:

Раньше работало иначе, и -1 не возвращалось в моих режимах.

Вы мысль мою не правильно поняли: при таком неоднозначном описании эту функцию неразумно было вообще использовать. Кстати в стандартной библиотеке она ни ни разу не используется