Цитата:
Сообщение от Zames
Для вычесления Юлианской даты есть формула.
JD=INT*(365.25*(Year1 + 4716)) + INT*(30.6001*(Month1 + 1)) + Day1 - 1524.5 а также некоторое условие .Если month=1 или Month=2 тогда следует принять Year=Year-1 Month=Month+12.
Учитывая ваши высказывания написал теперь процедуру
Код:
Procedure JDday(Year1, Month1:integer; Day1:real);
begin
if (month1=1) or ( Month1=2) then begin
Year1:=Year1-1;
Month1:=Month1+12;
JDday:=INT*(365.25*(Year1 + 4716)) + INT*(30.6001*(Month1 + 1)) + Day1 - 1524.5;
end;
Но при попытки скомпилировать и вывести в лейбл результат выдаёт ошибку [dcc32 Error] Unit1.pas(55): E2010 Incompatible types: 'Real' and 'procedure, untyped pointer or untyped parameter'.
В капчу вывожу через FloatToStr
|
Ну так конечно, потому что у вас это procedure, а вы пытаетесь вернуть из неё значение, когда присваиваете переменной JDday какое-то значение. Присвоение значение переменной с именем функции аналогично присвоению значения переменной result. У procedure нет возвращаемого значения, вот он и не компилирует. Это раз. Потом у вас всё написано внутри условия. Т.е. ваш расчёт произойдет только в том случае, если month1=1 или month1=2, иначе процедура ни чего не делает.