почему вылетает индикатор в инициализации на этой строке HiBuffer[i]= iHigh(NULL,0,i); ??? - страница 2

 
mario_SC--:

и вот как он задается double         HiBuffer[]; 

Значит размер массива - нулевой. Если этот массив не ассоциирован с индикаторным буфером, то он и останется нулевого размера. Обращение к любому элементу такого массива приведет к ошибке. Поэтому необходимо явно указать размер массива или, если массив ассоциирован с индикаторным буфером, то перед каждым обращением проверять индекс элемента к которому обращаетесь. Индекс должен лежать в пределах от 0 до Bars. Иначе - фатальная ошибка.
 
Scriptong:
Значит размер массива - нулевой. Если этот массив не ассоциирован с индикаторным буфером, то он и останется нулевого размера. Обращение к любому элементу такого массива приведет к ошибке. Поэтому необходимо явно указать размер массива или, если массив ассоциирован с индикаторным буфером, то перед каждым обращением проверять индекс элемента к которому обращаетесь. Индекс должен лежать в пределах от 0 до Bars. Иначе - фатальная ошибка.

браво! double         HiBuffer[4]; и все работает ! спасибо 

при обращении к 4-му элем, при том что массив на 4 - тот же вылет, проверено. 

 
mario_SC--:
тут с условием ты прав. но всеравно то что я с самого начала писал условие, что с цифрами и "правильным" условием - цикл то РАБОТАЕТ. я по отладчику смотрю. ВЫЛЕТАЕТ когда доходит до этого массива. Может я неправильно в него записываю ?

Я процитировал не твоё сообщение по ошибке. А в том твоём сообщении хрен редьки не слаще, такая-же херня...

Цикл должен быть построен от i = 0; пока i <= 99; i++ или в обратную сторону от i = 99; пока i >= 0; i--

Но не будет работать от нуля пока равно 99 так-же как не будет работать от 99 пока равно нулю. Так не бывает.

 
mario_SC--:

браво! double         HiBuffer[4]; и все работает ! спасибо 

при обращении к 4-му элем, при том что массив на 4 - тот же вылет, проверено. 

Учебник почитать так и не попробовали? Ладно,- порядок нумерации элементов массива когда-нибудь все-равно узнаете. 

Только этот HiBuffer уже совсем не тот, который Вам еще недавно был нужен. Он утратил все свойства, первоначально ему присущие, кроме double.  

 
AlexeyVik:

Я процитировал не твоё сообщение по ошибке. А в том твоём сообщении хрен редьки не слаще, такая-же херня...

Цикл должен быть построен от i = 0; пока i <= 99; i++ или в обратную сторону от i = 99; пока i >= 0; i--

Но не будет работать от нуля пока равно 99 так-же как не будет работать от 99 пока равно нулю. Так не бывает.

Один раз будет. Поэтому всегда пользую while, хотя это необязательно. Просто мне так комфортнее, не надо дополнительно отслеживать условие входа в цикл. 
 
tara:

Учебник почитать так и не попробовали? Ладно,- порядок нумерации элементов массива когда-нибудь все-равно узнаете. 

Только этот HiBuffer уже совсем не тот, который Вам еще недавно был нужен. Он утратил все свойства, первоначально ему присущие, кроме double.  

да понятно  4 с 0 считается. вы имеете ввиду что HiBuffer  потерял бесконечность ?

и мне не понятно как зигзаг рисует 

 
mario_SC--:

да понятно  4 с 0 считается. вы имеете ввиду что HiBuffer  потерял бесконечность ?

и мне не понятно как зигзаг рисует 

Я бесконечностью это не назову: 

1. Размерность массива фиксирована в момент инициализации статической области данных (при первой инициализации программы, т.е. только при прикреплении индикатора к графику). 

2. Порядок нумерации элементов массива не соответствует  порядку нумерации элементов массивов-таймсерий. 

3. Массив не может быть использован в качестве индикаторного буфера.

... а в остальном, прекрасная маркиза, все хорошо... все хорошо.  

 
tara:
Один раз будет. Поэтому всегда пользую while, хотя это необязательно. Просто мне так комфортнее, не надо дополнительно отслеживать условие входа в цикл. 

Уверен? А до того как ... проверить не мог?

У меня в общем-то тоже не хватало ума проверить, я и так понимал что работать не будет. Но ты толкнул меня на такой шаг. Я проверил.

   for(int i = 0; i == 9; i++)
    {
     Print("РАБОТАЕТ");
    }
 
tara:

Я бесконечностью это не назову: 

1. Размерность массива фиксирована в момент инициализации статической области данных (при первой инициализации программы, т.е. только при прикреплении индикатора к графику). 

2. Порядок нумерации элементов массива не соответствует  порядку нумерации элементов массивов-таймсерий. 

3. Массив не может быть использован в качестве индикаторного буфера.

... а в остальном, прекрасная маркиза, все хорошо... все хорошо.  

а как сказать буферу что б рисовал ? как это делается ?
 
AlexeyVik:

Уверен? А до того как ... проверить не мог?

У меня в общем-то тоже не хватало ума проверить, я и так понимал что работать не будет. Но ты толкнул меня на такой шаг. Я проверил.


Ты прав. Оказывается, Метаквоты проверяют условие модификации параметра цикла прежде, чем позволить войти в цикл оператором for. Это очень грустно, хотя меня лично никак не касается. 
Причина обращения: