Функциональные блоки
Функциональные блоки - функции с определёнными дополнительными возможностями обращения и хранения статической памяти. Для каждого вызова или объявления функционального блока по телу программы создается отдельный экземпляр статических перменных, которые загружаются при вызове блока.
Пример объявления Функционального блока:
block void SomeBlock(int initIndex)
{
static float blockFloat1;
static float blockFloat2;
if(initIndex = 0)
{
blockFloat1 = 123;
blockFloat2 = 321;
}
if(initIndex = 1)
{
blockFloat1 = 456;
blockFloat2 = 654;
}
}
При вызове функционального блока ему можно присвоить имя объекта, и после этого обращаться к статическим переменным внутри этого блока.
Пример:
void BlocksTest()
{
Logic->SomeBlock(0) as Block1;
Logic->SomeBlock(1) as Block2;
float _r1;
float _r2;
_r1 = Block1.blockFloat1;
_r2 = Block2.blockFloat1;
# не смотря на то что обращение идёт к одной и той же переменной, внутри _r1 будет "123", а внутри _r2 будет "456"
blockResult1 = Block1.blockFloat1;
blockResult2 = Block1.blockFloat2;
blockResult3 = Block2.blockFloat1;
blockResult4 = Block2.blockFloat2;
}
Для отладки работы функциональных блоков воспользуйтесь окнами "Обозреватель блоков" и "Просмотр блоков".