Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Обращение к переменным  (Прочитано 1790 раз)

Drus

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Обращение к переменным
« : 07 Марта 2021, 22:50:09 »
Здравствуйте. Подскажите пожалуйста, могу ли я в свойствах объекта (например TM_Line, TM_Shape, TM_Text) в пункте "Переменная", выбрать не всю переменную, а ее определенный бит (например через точку или как то по другому)?
Буду признателен за ответ. Спасибо.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Обращение к переменным
« Ответ #1 : 07 Марта 2021, 23:21:09 »
Здравствуйте.

Вы задавали данный вопрос два дня назад на почту техподдержки и мы на него отвечали. Дублируем ответ ниже:

Нет, возможность работать с битами напрямую есть только у компонентов "Кнопка" и "Флажок". Но можно работать с битами через скрипты. Примеры можно найти по ссылке. Например, можно изменять текст по биту переменной. Для этого, объекты "Текст" нужно связать с необходимыми переменными и у каждого объекта "Текст" в свойстве "Тэг" указать номер бита, по которому должен меняться текст. Далее, нужно написать универсальный скрипт приведенный ниже и установить его на событие OnDataChange требуемых объектов "Текст":
Код: (delphi)
begin
  if Sender is TM_Text then        // сначала убедимся, что скрипт вызван объектом "Текст"
    with Sender as TM_Text do      // далее будем работать с объектом Sender, как с текстом
      if GetBit(AsInt, Tag) = TRUE then
        Text := 'Работа'
      else
        Text := 'Авария';
end.
Если требуется что-то другое, опишите подробно что именно требуется и возможно мы предложим решение.

Drus

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Обращение к переменным
« Ответ #2 : 08 Марта 2021, 00:36:18 »
Спасибо большое за быстрый ответ. Я попробую изложенным Вами способом

Drus

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Обращение к переменным
« Ответ #3 : 08 Марта 2021, 15:35:01 »
Пожалуй, обрисую ситуацию более детально, так как все немного сложнее. Есть две переменные типа «WORD». В одной из этих переменных существует определенный бит, отвечающий за изменение цвета объекта, в другой – определенный бит, отвечающий за изменение видимости объекта. Эти две переменные привязываются к одному объекту (например, типа «TM_Text»). Необходимые биты из данных двух слов расположены в отличающихся позициях (например: бит цвета находится в слове №1 в позиции «13», а бит видимости находится в слове №2 в позиции «3»). Свойство «Tag» у нас одно. Если бы было два свойства «Tag» (например «Tag1» и «Tag2») то проблема была бы решена созданием двух универсальных скриптов, используя Вами предложенный метод (я это к тому, что хотелось бы создать универсальные скрипты). Предложите, пожалуйста, вариант решения.

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Обращение к переменным
« Ответ #4 : 09 Марта 2021, 09:38:09 »
   Здравствуйте.

  Разделение одного параметра на поля (не обязательно двоичные):
Tag = <парам.1> * 100 + <парам.2>, для Вашего примера Tag=1303. Использование:
Код: (delphi)
...
if GetBit(AsInt, Tag div 100) then            // основная переменная - парам.1
...
...
if GetBit(VariableEx.AsInt, Tag mod 100) then // дополнительная переменная - парам.2
...

Drus

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Обращение к переменным
« Ответ #5 : 09 Марта 2021, 10:53:14 »
Отличная идея. Сейчас попробую