Возникла ошибка при компилировании советника МТ4? - страница 2

 
Dina Paches:

А вот то, что в:

стоит знак <= (меньше или равно), тут могут быть возможны выходы сообщения array of range.

Т.е., знак < (меньше) - да, а = (равно) - лишнее.

А чему у автора равна BarsMASaveSignal? )
 
Dina Paches:
Без применения #property strict - возможно сообщение variable already defined (переменная определена)
Дина, вы вопрос-то топикстартера прочитали? ))
 
Sergei Vladimirov:
Дина, вы вопрос-то топикстартера прочитали? ))
Ещё не видя вашего поста, внесла постскриптум в свой о своей ошибке и sorry. ))
 
Sergei Vladimirov:
А чему у автора равна BarsMASaveSignal? )

Чему бы это было не равно, привычка ставить <= в таком цикле:

for(int i = bar+1 ; i <= BarsMASaveSignal+1 ; i++ )

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

 
Dina Paches:

Чему бы это было не равно, привычка ставить <= в таком цикле:

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

BarsMASaveSignal - это входной параметр. Это единственное, что о нём можно узнать из первого поста (по подсветке кода на скрине). Допустим, он равен 5. За пределы какого массива будет выход?
 
Sergei Vladimirov:
BarsMASaveSignal - это входной параметр. Это единственное, что о нём можно узнать из первого поста (по подсветке кода на скрине). Допустим, он равен 5. За пределы какого массива будет выход?

Я не гадала и не буду гадать об этом параметре и чему он равен.))

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

Когда в таком цикле в выражении проверки условия завершения цикла стоит знак <, а не <=, то это оптимально не гипотетически.

Исчисление чисел идёт в программировании от нуля. Когда, к примеру, границы цикла 9, то ставим в подобном выражении i < 9. А вот i <= 9 потребует дополнительных "изысков", чтобы не получить сообщение о выходе за пределы массива.

 
Dina Paches:

Я не гадала и не буду гадать об этом параметре и чему он равен.))

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

Когда в таком цикле в выражении проверки условия завершения цикла стоит знак <, а не <=, то это оптимально не гипотетически.

Исчисление чисел идёт в программировании от нуля. Когда границы цикла 9, то ставим в подобном выражении i < 9. А вот i <= 9 потребует дополнительных "изысков", чтобы не получить сообщение о выходе за пределы массива.

Да вы как связали-то эту переменную BarsMASaveSignal с длиной массива, а? Каков был ход ваших мыслей? ) Это НЕ длина массива, который перебирается в этом цикле, вы ошиблись. )) Просто автору кода нужно было перебрать бары до индекса (BarsMASaveSignal+1) включительно, вот он это и сделал. Про ваш креативчик "такой знак несёт опасность" он, видимо, не знал. )

 
Sergei Vladimirov:

Да вы как связали-то эту переменную BarsMASaveSignal с длиной массива, а? Каков был ход ваших мыслей? ) Это НЕ длина массива, который перебирается в этом цикле. Автору нужно перебрать бары до индекса (BarsMASaveSignal+1) включительно, вот он это и делает. Ваш креативчик про "такой знак несёт опасность" тут не при чём. )

Про массив - это исходя из перевода сообщения: array of..., когда выход за пределы.

Не креатив с моей стороны.

Если цикл примерно такого вида:

for(int i=xxxxx-1;i >= yyy;i--)

то да, вопросов нет, знаки >= это нормально.

А вот такой:

for(int i=yyy;i <= xxxxx;i++)

проблематичен.

А тут как раз такой второй вариант:

for(int i = bar+1 ; i <= BarsMASaveSignal+1 ; i++ )


P./S.: Увидела не точность здесь в своём первом выражении. Поправила.

 
Ай, всё. :)
 
Sergei Vladimirov:
Ай, всё. :)

:)))


Добавлено позже:

P./S.: А... там выше не уточнила ещё текстовым дополнением, что в примерах с xxxxx и yyy, по умолчанию подразумевается, что yyy меньше xxxxx.

И только сейчас увидела, что вы свой пост, что там цитировала, чуть поправили. Лан. Уже не буду тот пост "тревожить" правками, поэтому добавила уточнение здесь.

P./S.: Ну и всё же дополню здесь, что, наверное, стоило добавить там в примере и выражение вида:

for(int i=yyy;i < xxxxx;i++)
как такое, что не проблематично (т.е., c <, а не <=)
Причина обращения: