Добрый день, такая проблема. есть поле с показаниями, в данном случае это расход воды. имеем такой скрипт :
begin
if (Rashod_HVS_1.AsInt = 0) then
LampVar_3.Value := 1
else
LampVar_3.Value := 0;
end.
но когда расход падает ниже 0,5 то уже идет сигнал как будто ноль и аварийная лампа зажигается. как сделать условие чтобы именно при нуле выполнялся скрипт, а не округляло низкие расходы к нулю?
Здравствуйте.
но когда расход падает ниже 0,5 то уже идет сигнал как будто ноль и аварийная лампа зажигается.
Правильно, ведь Вы берёте значение AsInt, т.е. как целое число, а переменная у Вас, судя по описанию, вещественная. Если взять 0.5 как целое число, то будет произведено округление до ближайшего целого, т.е. до 0. Если взять 0.6, то до единицы. Поэтому нужно использовать AsFloat, т.е. брать число как вещественное.
begin
if (Rashod_HVS_1.AsFloat = 0) then
LampVar_3.Value := 1
else
LampVar_3.Value := 0;
end.
Второй вариант - брать значение без приведения к конкретному типу:
begin
if (Rashod_HVS_1.Value = 0) then
LampVar_3.Value := 1
else
LampVar_3.Value := 0;
end.