Условие. Календарь. Реализовать класс календаря с возможностью получения дня
недели для даты, числа дней в i месяце,начиная с текущего,определение
высокосного года! Как это реализовать в Delphi?
Класс календаря., ООП |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Класс календаря., ООП |
Egor Vladimirovich |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 35 Пол: Мужской Реальное имя: Егор Репутация: 0 |
Условие. Календарь. Реализовать класс календаря с возможностью получения дня
недели для даты, числа дней в i месяце,начиная с текущего,определение высокосного года! Как это реализовать в Delphi? |
Egor Vladimirovich |
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 35 Пол: Мужской Реальное имя: Егор Репутация: 0 |
Подскажите в чем ошибка? Убрал все лишнее из пирмера. Пытаюсь откомпилировать в делфи,появляеться ошибка(
Код unit kalendar; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type Tdate = class d : byte; m : byte; y : integer; end; Tstyle = (grigorian, julian); 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; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {***************************************************************************} function numofday; var stcor : integer; begin 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 dayofweek; var day : byte; buf : longint; begin buf := numofday(dat, style); buf := buf+4; day := buf mod 7; if day = 0 then day := 7; dayofweek := day; 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 - |
Текстовая версия | 3.05.2024 15:43 |