Обойдусь думаю без FOR и DIV/MOD, и напишу-ка скрипт считающий количество дней с 01.01.1980 до 01,01,2020:
var y,d,DinY:word;
r1,r2:real;
begin
y:=1980;
d:=0;
while y<2020 do
begin
if round(y/4)=(y/4) then DinY:=366 else DinY:=365;
d:=d+DinY;
//********
r1:=round(y/4);
r2:=y/4;
//********
y:=y+1;
end;
WriteInteger('var_d',d);
WriteInteger('var_y',y);
WriteFloat('var_r1',r1);
WriteFloat('var_r2',r2);
end.
В редакторе скрипта опять всё замечательно получил нужные 14610 дней, а при запуске в эмуляторе получается уже 14640 дней.
Для поиска косяка добавлены переменные r1 и r2, так как все года вдруг стали високосными.
Редактор скриптов:
var_r1=505
var_r2=504.75
Эмулятор:
var_r1=504.00
var_r2=504.00
Откуда 504.00???? это же итерация для 504*4=2016!!!!!! года, т.е. пред,пред,пред последняя.
Что происходит с локальными переменными в циклах? Возможно я что-то не понимаю, но кажется скрипты абсолютно не работоспособны. Как будто два различных компилятора. Один правильный для редактора кода и отладки а второй- кривой в эмуляторе и контроллере.