Странное поведение индексной переменной массива

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

Странное поведение индексной переменной массива

Сообщение mik » 30 мар 2016, 11:24

Заметил одну интересную особенность.
Панель MT8090XE.
С помощью макроса надо присвоить значения элементам массива.
В цикле for i ... next i присваиваю значения элементам массива.
Затем нужно присвоить другие значения элементам другого массива.
Пытаюсь присвоить значения в цикле for i ... next i - не работает.
Присваиваю значения в цикле for k ... next k - работает.
Т. е., одну и ту же индексную переменную не получается использовать в разных циклах for ... next.
Так не работает:
Код: Выделить всё
macro_command main()

short a[11]
int b[11]
char i

for i=0 to 10
j=i+1
a[j]=i*2
next i

for i=0 to 5
j=i+1
b[j]=i*100
next i

end macro_command


А так работает:
Код: Выделить всё
macro_command main()

short a[11]
int b[11]
char i
char k

for i=0 to 10
j=i+1
a[j]=i*2
next i

for k=0 to 5
j=k+1
b[j]=k*100
next k

end macro_command

Это бага или фича? (с)
mik
 
Сообщения: 34
Зарегистрирован: 30 мар 2016, 10:55

Re: Странное поведение индексной переменной массива

Сообщение den_po » 30 мар 2016, 13:24

Опишите подробней, каким образом вы проверяли результат.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Странное поведение индексной переменной массива

Сообщение Владимир_Я » 30 мар 2016, 13:29

Как определили что не работает? Какой тип у j? В примере j может стать равным 11, элемента a[11] не существует, так как объявили массив из 11 элементов.
Владимир_Я
 
Сообщения: 59
Зарегистрирован: 17 мар 2015, 10:50

Re: Странное поведение индексной переменной массива

Сообщение mik » 30 мар 2016, 13:45

den_po писал(а):Опишите подробней, каким образом вы проверяли результат.

Значения переменных массива a присваивались первой группе регистров панели, а значения переменных массива b присваивались второй группе регистров панели
Затем эти группы регистров отображались на панели с помощью объектов "Числа".
Хорошо было видно, что первый вариант макроса записывает значения только в переменные массива a, а второй вариант макроса записывает значения как в переменные массива a, так и в переменные массива b. Проверял с помощью офлайн-симуляции.

Сегодня проверил на другом компьютере еще раз - выяснилось, что иногда происходит запись значений в оба массива, а иногда только в один. Закономерности пока не нашел.
mik
 
Сообщения: 34
Зарегистрирован: 30 мар 2016, 10:55

Re: Странное поведение индексной переменной массива

Сообщение mik » 30 мар 2016, 16:48

Такое ощущение, что при офлайн симуляции проблема то появляется, то исчезает. А при загрузке проекта в панель описанной проблемы не возникает.
mik
 
Сообщения: 34
Зарегистрирован: 30 мар 2016, 10:55

Re: Странное поведение индексной переменной массива

Сообщение den_po » 30 мар 2016, 16:57

Какая версия EasyBuilder?
Можете проектом поделиться?
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Странное поведение индексной переменной массива

Сообщение mik » 30 мар 2016, 17:18

den_po писал(а):Какая версия EasyBuilder?
Можете проектом поделиться?

Ответил в личку.
mik
 
Сообщения: 34
Зарегистрирован: 30 мар 2016, 10:55

Re: Странное поведение индексной переменной массива

Сообщение den_po » 31 мар 2016, 18:03

Третий из циклов никогда не завершается.
Написал разработчикам.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Странное поведение индексной переменной массива

Сообщение mik » 31 мар 2016, 18:30

den_po писал(а):Третий из циклов никогда не завершается.
Написал разработчикам.

Это о чем говорит? Макрос постоянно крутится в панели? Можно ли мне оставить этот макрос в панели (и в каком виде), или же он будет тормозить работу панели?
mik
 
Сообщения: 34
Зарегистрирован: 30 мар 2016, 10:55

Re: Странное поведение индексной переменной массива

Сообщение den_po » 06 апр 2016, 12:04

Почему-то я был уверен, что пробовал увеличивать массив и это не помогало.
Проблема именно в этом, как и написал выше Владимир_Я, -- выход за границы массива.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25


Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 18