Здравствуйте.
Методы для работы с битами переменной рассмотрены
по ссылке. Чтобы извлечь нужный бит из значения переменной, нужно использовать функцию
GetBit. Чтобы записать значение бита в переменную, нужно использовать функцию
SetBit.
Для написания
универсального скрипта нужно создать внутренние переменные с именами, как у внешних переменных + приставка (например "_FilterBit"). Например, для переменной "vrMyVar" -> "vrMyVar_FilterBit" и т.д. Далее создать скрипт с типом события "
Изменились переменные", добавить в список скрипта все необходимые внешние переменные и использовать следующий код скрипта:
var
aSetBit : integer;
aVar: TM_Variable;
begin
aSetBit := 0;
aVar := GetVariableByName(Variable.Name + '_FilterBit');
if aVar <> nil then // если переменная существует
begin
aSetBit := SetBit(aSetBit, 2, GetBit(Variable.Value, 0)); // записать значение 1 бита переменной "vrMyVar" в 3 бит переменной aSetBit
aSetBit := SetBit(aSetBit, 3, GetBit(Variable.Value, 1)); // записать значение 2 бита переменной "vrMyVar" в 4 бит переменной aSetBit
aVar.Value := aSetBit; // записать полученный результат в переменную "vrMyVar_FilterBit"
end;
end.
Также обратите внимание, что при необходимости
целочисленные внешние переменные можно разбить на биты и работать с каждым битом отдельно.