Вверх ↑
Ответов: 2236
Рейтинг: 676
#0: 2017-02-26 13:25:11 ЛС | профиль | цитата
Массивы в элементах (Array, StrList) недоступны после загрузки схемы. Иногда хватает второго запуска, чтоб массив стал доступным. Ошибка происходит в проектах Hion modules (HM).
Схема для тестирования

Add(ArrayEnum,2,287,245)
{
link(onEnum,5:doMessage,[])
link(onEnd,7:doMessage,[(331,258)(331,293)])
link(Array,4:getVar,[])
}
Add(LineBreakEx,3,287,175)
{
Caption=#4:aLtr|
Type=3
link(_Data,6:Array,[])
}
Add(LineBreakEx,4,287,210)
{
Caption=#4:aLtr|
Type=2
}
Add(Message,5,357,245)
{
}
Add(Array,6,287,126)
{
Array=#17:["H","I","O","N"]|
}
Add(Message,7,357,287)
{
Text=#16:Перебор закончен|
}
Add(LineBreak,8,105,56)
{
Caption=#19:onCreate (MainForm)|
}
Add(LineBreak,9,105,245)
{
Caption=#19:onCreate (MainForm)|
link(Out,2:doEnum,[])
Primary=[8,0,-189]
}
Действия для повтора ошибки:
1. Вставить схему в новый проект HM.
2. Подсоединить LineBreak к MainForm.
3. Запустить проект - выскочит сообщение что перебор массива закончен (ошибка: массив пуст)
4. Повторно запустить проект - начнется перебор массива с выводом сообщений.

Можно повторить ошибку если сохранить проект, закрыть проект, заново его открыть и повторить действия в пунктах 3 и 4.

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

В проектах Web application этой ошибки нет.
карма: 11

2
Тип: ошибка, Статус: выполнено
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2017-03-02 16:53:05 ЛС | профиль | цитата
Только массив-то тут при чем? Так работает LineBreak, который вставлен между массивом и элементом для его перебора.
карма: 27