Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 08 Декабря 2025, 16:25:23

Название: Запись в 2 бита
Отправлено: Серега от 08 Декабря 2025, 16:25:23
Добрый день!
Нужен совет как сделать.
К кнопке привязана переменная и установлен бит. Понадобилось этой же кнопкой кроме установленного бита изменять еще один бит в этой же переменной. Пробывал по разному и как то не получилось. Подскажите идею реализации?
Название: Re: Запись в 2 бита
Отправлено: Simple_Scada от 11 Декабря 2025, 17:32:06
Здравствуйте.

Можно удалить внешнюю переменную из свойства "Переменная", указать её в свойстве "Доп. переменная" и на событие "OnClick" кнопки использовать следующий код:
Код: (delphi)
var
  aVar : Int64;
  aSost: Boolean;
begin
  if Sender is TM_Button then
    with Sender as TM_Button do
    begin
      aSost := (GetBit(VariableEx.AsInt, Tag)) and (GetBit(VariableEx.AsInt, Tag + 2));  // получаем текущее состояние нужных битов переменной
      aVar := VariableEx.AsInt64;                         // записываем в локальную переменную значение битовой переменной
      aVar := SetBit(aVar, Tag, not aSost);               // изменяем бит указанный в свойстве "Тег"
      aVar := SetBit(aVar, Tag + 2, not aSost);           // изменяем другой необходимый бит
      VariableEx.Value := aVar;                           // записываем в битовую переменную полученное значение
    end;
end.
Первый номер бита указывается в свойстве кнопки "Тег", второй вычисляется относительно первого.
Название: Re: Запись в 2 бита
Отправлено: Серега от 12 Декабря 2025, 08:12:15
Спасибо! Будем пробывать!