Simple-Scada forum

Simple-Scada 2 => Ошибки => Тема начата: Timothy Clement от 12 Декабря 2018, 09:59:31

Название: Переменные со сдвигом запятой
Отправлено: Timothy Clement от 12 Декабря 2018, 09:59:31
Для демонстрации проблемы сделал небольшой скрипт. В проекте 4 одинаковых внутренних переменных типа Int со шкалой -4000..6000 и свойством сдвиг запятой -1.
На экране 4 окна вывода связанные с этими переменными и кнопка со скриптом OnClick:
Код: (delphi)
begin
// во все переменные записываем одинаковое значение
 Tag1.Value := 1001;
 Tag2.Value := 1001;
 Tag3.Value := 1001;
 Tag4.Value := 1001;
// первую переменную больше не используем в скрипте
// со второй переменной выполняем одно действие
 Tag2.Value := Tag2.Value;
// с третьей переменной выполняем два действия
 Tag3.Value := Tag3.Value + 0;
 Tag3.Value := Tag3.Value - 0;
// с четвёртой переменной выполняем три действия
 Tag4.Value := Tag4.Value + 0;
 Tag4.Value := Tag4.Value - 0;
 Tag4.Value := Tag4.Value;
end.
В итоге при нажатии кнопки видим 4 разных показания при одинаковом значении всех переменных, то есть при каждом действии со значением происходит сдвиг запятой.
Название: Re: Переменные со сдвигом запятой
Отправлено: Simple-Scada от 12 Декабря 2018, 17:40:26
Для правильного присвоения используйте свойства переменной OriginalAsInt, OriginalAsFloat и OriginalAsExtended, например:
Код: (delphi)
Tag1.Value := Tag1.OriginalAsInt + 1;
Обдумаем и скорее всего изменим систему преобразования значений, чтобы конструкции приведённые Вами не приводили к излишнему сдвигу значений.
Название: Re: Переменные со сдвигом запятой
Отправлено: Simple-Scada от 20 Февраля 2019, 11:34:50
Исправили процесс присваивания в обновлении Simple-Scada 2.3.4.0.