Хотелось бы не выдумывать велосипед с фильтрацией значений переменной, а воспользоваться фильтром переменной из коробки.
Рассматривали применение зоны нечувствительности под Вашу задачу. Получается следующее: у переменной есть две зоны нечувствительности, одна для выдачи сообщений, вторая для архивации. Зона для сообщений обрабатывается только если у переменной включены границы
на вкладке "Дополнительные" и в проекте включены "Сообщения о нарушении границ". Зона для архивации обрабатывается только если у переменной включена архивация. Т.е. обе зоны проверяются только тогда, когда они действительно нужны (можно проверять зоны всегда для всех переменных, но в большинстве случаев они не будут использоваться). Мы можем добавить специальное свойство, которое позволит понять нарушена ли зона нечувствительности у переменной, или нет. Т.е. в OnDataChange скрипте можно будет писать так:
begin
if myVar.TrendDeadZoneChange then
Text1.Text := 'Значение вышло за пределы зоны нечувствительности';
end.
, но работать это будет только для переменных с включенной архивацией. Аналогичное свойство можно сделать для зоны сообщений и работать оно будет только для переменных у которых включены границы + в проекте включены "Сообщения о нарушении границ".