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

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

Автор Тема: Запись в 2 бита  (Прочитано 17283 раз)

Серега

  • Старожил
  • ****
  • Сообщений: 285
    • Просмотр профиля
Запись в 2 бита
« : 08 Декабря 2025, 16:25:23 »
Добрый день!
Нужен совет как сделать.
К кнопке привязана переменная и установлен бит. Понадобилось этой же кнопкой кроме установленного бита изменять еще один бит в этой же переменной. Пробывал по разному и как то не получилось. Подскажите идею реализации?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1393
    • Просмотр профиля
Re: Запись в 2 бита
« Ответ #1 : 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.
Первый номер бита указывается в свойстве кнопки "Тег", второй вычисляется относительно первого.
« Изменён: 12 Декабря 2025, 08:23:47 от Simple Scada »

Серега

  • Старожил
  • ****
  • Сообщений: 285
    • Просмотр профиля
Re: Запись в 2 бита
« Ответ #2 : 12 Декабря 2025, 08:12:15 »
Спасибо! Будем пробывать!