Условие. Календарь. Реализовать класс календаря с возможностью получения дня недели для даты, числа дней в i месяце,начиная с текущего,определение высокосного года! Как это реализовать в Delphi?
if style = grigorian then begin stcor := 2-dat.y div 100+dat.y div 400; if ((dat.y mod 100 = 0) and (dat.y mod 400 <> 0)) and (dat.m <= 2) then stcor := stcor + 1; end else begin stcor := 0; end;
inc(dat.m);
if dat.m <= 3 then begin dat.m := dat.m+12; dec(dat.y); end; numofday := (36525*dat.y) div 100 + (306*dat.m) div 10 + stcor + dat.d; end;
function lenofmonth; var len : byte; begin case month of 2 : begin if year mod 4 = 0 then len := 29 else len := 28; if (style = grigorian) and (year mod 100 = 0) and (year mod 400 > 0) then len := 28; end; 4, 6, 9, 11 : len := 30 else len := 31; end; lenofmonth := len; end;
function isleap; begin isleap := (((year mod 4 = 0) and (year mod 100 <> 0)) or (year mod 400 = 0)); end;
end.
volvo
17.10.2006 1:42
Цитата
Пытаюсь откомпилировать в делфи,появляеться ошибка(
У меня в Delphi 6 все откомпилировалось нормально... Какая у тебя ошибка, и где возникает?
Egor Vladimirovich
17.10.2006 14:29
Ошибка при компеляции такая "Project1.exe raised exception class EresNotFound with message 'Resource Tform1 not found".Prossec Stoped.Use step or run cont...."
volvo
17.10.2006 14:48
Ничего подобного... ЭТО - не ошибка компиляции, а ошибка времени выполнения. Ты запустил свою программу, и она выдала тебе это исключение...
Ничего не могу сказать, ибо не знаю, где именно у тебя возникает исключение. Может, в твоем коде? Ни одного слова связанного с модулем Kalendar я не нашел...
Atos
17.10.2006 14:58
Стоп, Egor Vladimirovich, ты пытаешься откомпилировать один модуль, без проекта? Тогда понятно, почему ошибка - форма-то не создана.
Egor Vladimirovich
18.10.2006 22:26
Вроде разобрался) Спасибо! Еще один вопрос! Почему при работе выдает ошибку в это куске программы :
~~~~~~~~~~~~~~~~~~~~~ type Tdate = class d : byte; m : byte; y : integer; end; ~~~~~~~~~~~~~~~~~~~~~
Гость
21.10.2006 14:28
Помогите написать свойства( property ) для функций:
function numofday(dat : tdate; style : tstyle) : longint; function dayofweek(dat : tdate; style : tstyle) : byte; function lenofmonth(month : byte; year : word; style : tstyle) : byte; function isleap(year : integer):boolean;
мисс_граффити
21.10.2006 15:59
Свойства для функций - это как? Что они делают? Egor Vladimirovich, КАКУЮ ошибку? Во время РАБОТЫ или при компиляции?
Egor Vladimirovich
21.10.2006 19:14
мисс_граффити Свойства для методов например: function numofday(dat : tdate; style : tstyle) : longint; а свойство будет выглядеть так property d:tdate; read d write d;( или как то так,особо разбираюсь)
С предъидущей ошибкой я разобрался... спс
мисс_граффити
21.10.2006 20:00
так. то ли я в терминологии не понимаю, то ли не я..... свойства - грубо говоря, это механизмы доступа к полям. так? свойства отличаются от полей тем, что связаны с некоторыми действиями. Как минимум - просто записью и считыванием из поля. При желании - проверкой корректности ввода и дополнительными фишками (ну например: для класса "фигура" свойство "цвет" может обеспечивать перерисовку на экране). что может ДЕЛАТЬ (не как выглядеть, а что делать? зачем оно нужно??) свойство для функции (или метода, не суть важно).
Egor Vladimirovich
23.10.2006 22:26
Собственно во всем разобрался и все сделал,спасибо за помощь!!! Кто хочет может скачать и посмотреть exe файл!!! Пишите свои комментарии!!!
Egor Vladimirovich
8.11.2006 13:51
Как реализовать процедуру поиска числа дней между 2 датами? дата в формате д.м.г! Помогите!
мисс_граффити
8.11.2006 18:05
решалось. см. FAQ
Egor Vladimirovich
8.11.2006 22:23
Уже посмотрел, нашел только процедуру сравнения 2 дат(одна больше другой и т.д.) А то что мне нужно найти к сожалению не удалось.
мисс_граффити
8.11.2006 23:09
Самая первая задача. То же самое, только наоборот: по времени и дате вычисляется другая дата.
Egor Vladimirovich
9.11.2006 1:13
Цитата(мисс_граффити @ 8.11.2006 19:09)
Самая первая задача. То же самое, только наоборот: по времени и дате вычисляется другая дата.
В Дельфи,в консоле не смог откомпилировать.Ругаеться на Inc(DayInMonth[2], Byte((CurrYear mod 4) = 0));!! Как это можно записать по другому???
klem4
9.11.2006 1:35
И на какую же ошибку система тебе указывает ? У меня откомпилировалось нормально.
мисс_граффити
9.11.2006 1:44
DayInMonth[2]:=DayInMonth[2]+Byte((CurrYear mod 4) = 0)
если тоже не откомпилируется - напиши условный оператор.
Egor Vladimirovich
9.11.2006 22:14
Цитата(мисс_граффити @ 8.11.2006 21:44)
DayInMonth[2]:=DayInMonth[2]+Byte((CurrYear mod 4) = 0)
если тоже не откомпилируется - напиши условный оператор.
Вот такая ошибка появляеться [Error] Project2.dpr(33): Left side cannot be assigned to
Я не понимаюююю! Помогите плз,завтра здавать,одной процедурки не хватает! (((
мисс_граффити
9.11.2006 22:22
if ((CurrYear mod 4) = 0) then DayInMonth[2]:=DayInMonth[2]+1
то есть если год високосный, делаем в феврале 29 дней.
кстати, по-моему, если год делится на 100, но не делится на 400 (ну например 1900, 1700) - он не високосный.
Egor Vladimirovich
10.11.2006 2:45
2 мисс графити откомпилировал,тока че то не разобрался как наоборот сделать( Я помоему дыбил)
Алена
10.11.2006 3:19
Цитата
по-моему, если год делится на 100, но не делится на 400 (ну например 1900, 1700) - он не високосный.
If ((CurrYear mod 4) = 0) and not (((CurrYear mod 100) = 0) and ((CurrYear mod 400) <> 0)) then Inc(DayInMonth[2]);
Egor Vladimirovich
10.11.2006 15:48
Помогите кто нибудь мне написать процедуру Вычисления количества дней,между 2 датами!!!!!!!!!
Malice
10.11.2006 17:04
Цитата(Egor Vladimirovich @ 10.11.2006 11:48)
Помогите кто нибудь мне написать процедуру Вычисления количества дней,между 2 датами!!!!!!!!!
Тебе нужна функция, переводящая дату в количество дней начиная с хз какой даты:
function days (y,m,d:integer):longint; begin if m<3 then begin dec (y); inc (m,12); end; days:=round(int (y*365.25)+int ((m+1)*30.601)+d-int(y/100)+int (y/400)); end;
Для вычисления разницы между датами в самый раз.
Гость
10.11.2006 21:19
Цитата(Malice @ 10.11.2006 13:04)
Тебе нужна функция, переводящая дату в количество дней начиная с хз какой даты:
function days (y,m,d:integer):longint; begin if m<3 then begin dec (y); inc (m,12); end; days:=round(int (y*365.25)+int ((m+1)*30.601)+d-int(y/100)+int (y/400)); end;
Для вычисления разницы между датами в самый раз.
Просто ОГРОМНОЕ СПАСИБО за помощь!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.