Здравствуйте.
Если двигатель всегда находится в каком-то одном состояний(в переменной одновременно может быть активен только один бит), то вместо проверки битов можно использовать текущее значение переменной. Объект "Текст" нужно связать с требуемой переменной и
procedure ChangeText(aText: string; AFontColor, AColor, aFlashColor: Cardinal);
begin
(Sender as TM_Text).Text := aText; // текст
(Sender as TM_Text).FontColor := AFontColor; // цвет текста
(Sender as TM_Text).Color := AColor; // цвет фона
(Sender as TM_Text).FlashColor := aFlashColor; // цвет мигания
end;
begin
if not (Sender is TM_Text) then Exit; // если скрипт вызван не объектом Текст, то прерываем выполнение
case (Sender as TM_Text).AsInt of // если значение переменной равно:
1 : ChangeText('Включен', clBlack, clForestGreen, clNone); // активен бит 0
2 : ChangeText('Отключен', clBlack, clDarkSalmon, clNone); // активен бит 1
4 : ChangeText('Авария', clBlack, clFireBrick, clRed); // активен бит 2
8 : ChangeText('Состояние 4', clBlack, clForestGreen, clNone); // активен бит 3
16 : ChangeText('Состояние 5', clBlack, clForestGreen, clNone); // и т.д.
32 : ChangeText('Состояние 6', clBlack, clForestGreen, clNone);
64 : ChangeText('Состояние 7', clBlack, clForestGreen, clNone);
128 : ChangeText('Состояние 8', clBlack, clForestGreen, clNone);
256 : ChangeText('Состояние 9', clBlack, clForestGreen, clNone);
512 : ChangeText('Состояние 10', clBlack, clForestGreen, clNone);
1024 : ChangeText('Состояние 11', clBlack, clForestGreen, clNone);
2048 : ChangeText('Состояние 12', clBlack, clForestGreen, clNone);
4096 : ChangeText('Состояние 13', clBlack, clForestGreen, clNone);
8192 : ChangeText('Состояние 14', clBlack, clForestGreen, clNone);
16384 : ChangeText('Состояние 15', clBlack, clForestGreen, clNone);
32768 : ChangeText('Состояние 16', clBlack, clForestGreen, clNone);
else
ChangeText('Не определено', clBlack, clGray, clNone);
end;
end.