UpakNet CSyntax_V2.1
Руководство пользователя
×

Функциональные блоки

Функциональные блоки - функции с определёнными дополнительными возможностями обращения и хранения статической памяти. Для каждого вызова или объявления функционального блока по телу программы создается отдельный экземпляр статических перменных, которые загружаются при вызове блока.
 
Пример объявления Функционального блока:
 
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;
}
 
Для отладки работы функциональных блоков воспользуйтесь окнами "Обозреватель блоков" и "Просмотр блоков".
Онлайн помощь создана в Dr.Explain