Simple-Scada 2 > Ошибки
Переменная типа SmallInt принимает недопустимое значение.
(1/1)
dima_k:
--- Код ---var iii : SmallInt;
www : word;
begin
www:=60000;
move(www,iii,2);
TextWWW.Text:=IntToStr(www)+#13#10+IntToStr(iii);
end.
в данном коде в переменной iii по идее должно быть "-5536" а получается 60000.
Чего в принципе быть не может т.к. у SmallInt диапазон значений -32768…32767
Timothy Clement:
Локальные переменные нужно обязательно инициализировать перед использованием, там может быть случайное значение.
Просто вначале скрипта написать iii := 0;
dima_k:
move(www,iii,2);
это ли не инициализация.
Я в переменную www записал значение.
И при помощи move записал его в iii.
Вопрос в том, что переменная iii должна была стать равна "-5536" а стала 60000 - чего не должно быть
Timothy Clement:
Значит компилятор не проверяет целочисленные значения и границы типов, для Object Pascal это вроде допустимо. Также можно записать в глобальную переменную созданную через редактор число превышающее границы типа. Для внешней переменной ОРС явно не даст записать выходящее за границы.
Simple-Scada:
Здравствуйте.
Да, текущая версия компилятора берёт локальные переменные типов ShortInt и SmallInt как беззнаковые того же размера. Попробуем устранить в одном из будущих обновлений.
Навигация
Перейти к полной версии