Показать сообщение отдельно
  #7  
Старый 12.09.2013, 13:22
Annihilator Annihilator вне форума
Прохожий
 
Регистрация: 16.06.2013
Сообщения: 29
Версия Delphi: Delphi XE 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, иначе процедура ни чего не делает.
Ответить с цитированием