рдХрдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ



рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЯреАрдбреАрдбреА рдХреЛ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдорд╛рдирддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рдм рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рдХрд▓рд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдЬреАрд╡рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рддрдереНрдп рд╣реИред рдореЗрд░реЗ рд╕рд╛рде рддрд░рд╣-рддрд░рд╣ рдХреЗ рд░реЛрдорд╛рдВрдЪ рд╣реЛрдиреЗ рд▓рдЧреЗред рдФрд░, рд╕рднреА рд░реЛрдорд╛рдВрдЪ рдХреА рддрд░рд╣, рдХрднреА-рдХрднреА рдпрд╣ рдереЛрдбрд╝рд╛ рдбрд░рд╛рд╡рдирд╛ рд╣реЛ рдЧрдпрд╛ред рдореИрдВ рдРрд╕реЗ рд╣реА рдПрдХ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореИрдВрдиреЗ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд┐рдпрд╛ рдерд╛, рдЙрд╕рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рд▓реЗрдХрд░ рдПрдХ рд╕рд╛рд▓ рддрдХ рдХрд╛ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рд╣реБрдПред рдПрдХ рдмреБрд░рд╛ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ) рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд┐рд╕рдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдореИрдВ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХреБрдЫ рдХреЛрдб рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбреЗрд▓реНрдлреА рдореЗрдВ рдереАред OOP рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп TTimeIterator , TTimeIterator рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рд╕реЗ рд╢реЗрд╖ рдХрдХреНрд╖рд╛рдПрдВ рдорд┐рдирдЯ, рдШрдВрдЯрд╛, рджрд┐рди, рдорд╣реАрдирд╛, рд╡рд░реНрд╖ рдХреА рд╡реГрджреНрдзрд┐ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реБрдИрдВред рдЗрди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдХреЗ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдВрддрд░рд╛рд▓ рдХреА рд╕рд╣реА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЛ рд╕рд╣реА рд╕рдордп рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдореИрдВ рдХрдЯреМрддреА рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рд▓рд╛рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 TTimeIterator=class(TObject) private StartPoint, FinishPoint:TDateTime; CurrentPoint:TDateTime; CurrentPointNumber:integer; function DTRound(p:TDateTime):TDateTime; virtual; abstract; function DTNext(p:TDateTime):TDateTime; virtual; abstract; function DTPrev(p:TDateTime):TDateTime; virtual; abstract; public constructor Create;overload; function Dump:string; function GetTotalPoints:integer; virtual; abstract; function GetCurrentPointNumber:integer; function GetCurrentPoint:TDateTime; procedure MoveNextPoint; function IsCurrentPoint:boolean; procedure SetStartPoint(DateTime:TDateTime; IncludeMode:TTimeIncludeModeType=INCLUDE_MODE); procedure SetFinishPoint(DateTime:TDateTime; IncludeMode:TTimeIncludeModeType=INCLUDE_MODE); end; 

рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ

  function GetTotalPoints:integer; virtual; abstract; 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдХреБрд▓ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд╛рд╕ рд╣реЛрддреА рд╣реИред рд╢рд╛рд╕реНрддреНрд░реАрдп рдкреБрдирд░рд╛рд╡реГрддреНрдд рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдПрдХ рдорд┐рдирдЯ, рдПрдХ рдШрдВрдЯреЗ, рдПрдХ рджрд┐рди рдФрд░ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╢реБрд░реБрдЖрдд рдорд╣реАрдиреЛрдВ рд╕реЗ рд╣реЛрддреА рд╣реИред рдХрд╛рд░реНрдп рдПрдХ рдорд╛рд╕рд┐рдХ GetTotalPoints рдореЗрдВ GetTotalPoints рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред

рдЕрдЬреАрдм рдорд╣реАрдиреЗ рдХреЗ рд╕рдорд╛рд░реЛрд╣


рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рдореИрдВрдиреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдирд╛рдо рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рдпрд╛ рдЬреЛ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВред

 function MonthsBetween(const ANow, AThen: TDateTime): Integer; 

рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдПред рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЕрд╕реНрдкрд╖реНрдЯ рднрд╛рд╡рдирд╛ рдиреЗ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рджрд┐рдпрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рд╕реЗ рдмрд╛рд╣рд░ред

рдереЛрдбрд╝реА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐, 01.01.2012 0:00 рдФрд░ 01.05.2012 0:00 рдмреАрдЪ рдХреЗ MonthsBetween рдЕрдиреБрд╕рд╛рд░ 01.05.2012 0:00 рдЪрд╛рд░ рдорд╣реАрдиреЗ (рдЬрдирд╡рд░реА, рдлрд░рд╡рд░реА, рдорд╛рд░реНрдЪ, рдЕрдкреНрд░реИрд▓) рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 3. рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд╕рд┐рджреНрдз рдХрд╣рд╛рд╡рдд рд╣реИ: рдпрджрд┐ рдмрд╛рдХреА рд╕рдм рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝реЗрдВред рдореИрдВрдиреЗ рд╣реЙрд░рд░ рдореЗрдВ рд╣реЗрд▓реНрдк рдФрд░ рд░реАрдбрд┐рдВрдЧ рдЦреЛрд▓реА:

рдорд╣реАрдиреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордВрдерд╡реЗрдиреЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рджреЛ рдЯреАрдбреАрдЯреЗрдЯ рдЯрд╛рдЗрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмреАрдЪред рдХреНрдпреЛрдВрдХрд┐ рдорд╣реАрдиреЗ рд╕рднреА рд╕рдорд╛рди рд▓рдВрдмрд╛рдИ рдХреЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, MonthBetween рдкреНрд░рддрд┐ рдорд╛рд╣ 30.4375 рджрд┐рдиреЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдиреНрдирд┐рдХрдЯрди рджреЗрддрд╛ рд╣реИред

рд╡рд╣рд╛рдБ рддреБрдо рдЬрд╛рдУ! рдлрд╝рдВрдХреНрд╢рди рд▓рдЧрднрдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд╕рдд рдорд╣реАрдиреЗ рдХреА рд▓рдВрдмрд╛рдИ 30.4375 рджрд┐рдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИред

рдмреЛрд░рд▓реИрдВрдб рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╢рдмреНрдж


рдкрд╣рд▓рд╛ рдЭрдЯрдХрд╛ рдмреАрддрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рджрд┐рдорд╛рдЧрд╝ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдЬреАрдм рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рддрд░реНрдХ рд╣реИред рдФрд░ рдорджрдж рдореЗрдВ рдЗрд╕ рддрд░реНрдХ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдХреЗрдд рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдордп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдХрд┐рддрдиреЗ рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╕реНрдпрд╛ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкреВрд░реЗ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ? 28 рдлрд░рд╡рд░реА рд╕реЗ 31 рдорд╛рд░реНрдЪ рдХреЗ рдмреАрдЪ рдкреВрд░реЗ рдХрд┐рддрдиреЗ рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ? рдФрд░ 28 рдлрд░рд╡рд░реА рд╕реЗ 28 рдорд╛рд░реНрдЪ рдХреЗ рдмреАрдЪ? рдорд┐рдЯреНрдЯреА рдмрд╣реБрдд рдлрд┐рд╕рд▓рди рднрд░реА рд╣реИред

рдХреНрдпреЛрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЛрд░рд▓реИрдВрдб рдХрд╛рдлреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рднрд▓реЗ рд╣реА рд╣рдо рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдорд╣реАрдиреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЖрддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд╣реИред рдФрд░ рдЗрди рдмрд┐рдВрджреБрдУрдВ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рддрд░реНрдХ рдХрд╛ рдЦрдВрдбрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреА рджреВрд╕рд░реА рдЖрдкрддреНрддрд┐ - рдореИрдВ рдПрдХ рднреА рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрд╛, рдЬрд╣рд╛рдВ рдмреЛрд░рд▓реИрдВрдб рдиреЗ рдЗрд╕реЗ рдЬрд┐рд╕ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдерд╛ рдЙрд╕рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд╕рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдбрд░ рдХреНрдпреЛрдВ рд▓рдЧрд╛


рдореИрдВ рдмреЛрд░рд▓реИрдВрдб рдХрдВрдкрдиреА рд╕реЗ рдбрд░рддрд╛ рдирд╣реАрдВ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдЬреАрдм рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреА рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИред

рдЬрдм рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛ рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рдерд╛, рддреЛ рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рддреБрдЪреНрдЫрддрд╛ рд╕реЗ рдбрд░рддрд╛ рдирд╣реАрдВ рдерд╛ред

рдореБрдЭреЗ рдбрд░ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдХрднреА-рдХрднреА рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╣реАрдиреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреБрдбрд╝рд╡рд╛рдБ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ)ред

рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЪрддреБрд░рд╛рдИ рд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХрд╛рдмреВ рдкрд╛ рд▓рд┐рдпрд╛ред рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рдирд╛рдИ рдХреЗ рдмрд┐рдирд╛ рдореИрдиреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдХрд╛рдмреВ рдкрд╛рдирд╛ред рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рджрд╢рдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХрднреА-рдХрднреА рдирдХрд▓реА рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рдореВрд▓ рдХрд╛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА, рдХрдард┐рди-рд╕реЗ-рдирд┐рджрд╛рди рдирд┐рджрд╛рди рдорд┐рд▓реЗрдЧрд╛ред рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рддрдиреЗ рдРрд╕реЗ рджреЛрд╖ рдореМрдЬреВрдж рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдореИрдВ рд╕рд┐рд░реНрдл рд▓реБрдХреА рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рджреЛрд╖ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдиреЗ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рджрд┐рдпрд╛:

рдкрд╣рд▓рд╛: рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред
рджреВрд╕рд░реА рдмрд╛рдд: рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдХ рд░рд╛рдЬрдиреЗрддрд╛ рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рдЙрдирд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛: "рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд░реВрд╕ рддреЗрд▓ рдХреА рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ред" рдЙрд╕рдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛: "рдореВрд░реНрдЦ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реБрдмрд╣ рд╕реЗ рд░рд╛рдд рддрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред"

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ


рдореИрдВрдиреЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛,

 function DeviceTimeExactMonthsBetween(StartDate, EndDate: TDateTime):integer; const BASE_YEAR=1990; var y1,y2,m1,m2,d1,d2 : word; StartMonths, EndMonths:integer; begin DecodeDate(StartDate,y1,m1,d1); DecodeDate(EndDate,y2,m2,d2); StartMonths:=(y1-BASE_YEAR)*12+m1; EndMonths:=(y2-BASE_YEAR)*12+m2; Result:=EndMonths-StartMonths; if d2<d1 then dec(Result); if Result<0 then Result:=0; end; 

рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЕрдиреНрдп рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝рд╛:

 CheckNotEquals( // Headfire function DeviceTimeExactMonthsBetween( StrToDateTime('01.01.2012'), StrToDateTime('01.05.2012')), // BorlandFunction MonthsBetween( StrToDateTime('01.01.2012'), StrToDateTime('01.05.2012')), //Test name 'Month BorladFailureTest' ); 

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЛрд░рд▓реИрдВрдб рдХрдВрдкрдиреА рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ рдордВрдерд╡реЗрдиреЗрдЯ рдлрдВрдХреНрд╢рди рдХрд┐рд╕реА рджрд┐рди рдЕрдзрд┐рдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдореИрдВ рдХрд┐рддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реВрдБ?


рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдм, рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдПрдХ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ред рджрд╕ рдорд┐рдирдЯ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рджреГрд╢реНрдп рджреЗрдЦрд╛ред рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ (рд╡реИрд╕реЗ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

 procedure TMainForm.DrawFaults(BeginDate,EndDate:TDateTime); var IteratorForBegin,IteratorForEnd:TTimeIterator; x,y,diff:Integer; color:TColor; begin IteratorForBegin:=CreateDeviceTimeIterator(MONTH_INTERVAL); IteratorForEnd:=CreateDeviceTimeIterator(MONTH_INTERVAL); IteratorForBegin.SetStartPoint(BeginDate , INCLUDE_MODE); IteratorForBegin.SetFinishPoint(EndDate, INCLUDE_MODE); while (IteratorForBegin.IsCurrentPoint) do begin IteratorForEnd.SetStartPoint(IteratorForBegin.GetCurrentPoint, INCLUDE_MODE); IteratorForEnd.SetFinishPoint(EndDate, INCLUDE_MODE); while (IteratorForEnd.IsCurrentPoint) do begin diff:=DeviceTimeExactMonthsBetween(IteratorForBegin.GetCurrentPoint,IteratorForEnd.GetCurrentPoint) - MonthsBetween(IteratorForBegin.GetCurrentPoint,IteratorForEnd.GetCurrentPoint); color:=clBlack; //  ,    -  -   if diff=0 then color:=clGreen; if diff=1 then color:=clRed; y:=IteratorForBegin.GetCurrentPointNumber; x:=y+IteratorForEnd.GetCurrentPointNumber; Canvas.Brush.Color:=color; Canvas.Ellipse(10+x*12,10+y*12,20+x*12,20+y*12); //   // Canvas.Pixels[10+x,10+y]:=color; IteratorForEnd.MoveNextPoint; end; IteratorForBegin.MoveNextPoint; end; end; 

рдпрд╣рд╛рдВ 2012 рдХреЗ рднреАрддрд░ MonthsBetween рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджрд░реНрд╢рд╛рддреА рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ (рдЬрдм рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдЦрд╛ рдерд╛)ред рдЧреНрд░реАрди рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм MonthsBetween рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рд▓рд╛рд▓, рдЬрдм рдпрд╣ рдПрдХ рдХрдо рд╣реЛрддрд╛ рд╣реИред


рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрд╖ рдХреА рджреВрд╕рд░реА рдЫрдорд╛рд╣реА рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рдереАред (рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддрд┐рдерд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ)ред рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдпрд╣рд╛рдБ рдмреАрд╕ рд╕рд╛рд▓ рдХреА рд░реЗрдВрдЬ рдореЗрдВ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рд╣реИ (2010-2020)


рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рд▓рдЧрднрдЧ 50 рд╕реЗ 50 рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рд▓рдВрдмреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖред рдЬрдм рдореИрдВ рдмрд╣реБрдд рдЖрд▓рд╕реА рдирд╣реАрдВ рдерд╛ рдФрд░ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдВрддрд░рд╛рд▓ рд▓рд┐рдпрд╛, рддреЛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рд╛рдВ рдмрд┐рд▓реНрдХреБрд▓ред рдХрд╛рд░рдг, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрджреНрджреЗрд╢реНрдп, рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ, рдЙрджреНрдпреЛрдЧ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рд╢реБрд░реВ рдореЗрдВ рд▓реЙрдиреНрдЪ рд░реЙрдХреЗрдЯ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рддреИрдпрд╛рд░ рд░реЙрдХреЗрдЯ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд░рдорд╛рдгреБ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдкрдирдбреБрдмреНрдмреА рдХреА рддрд░рд╣, рдпрд╣ рдЯреЛрдкрд┐рдпрд╛рдВ рдмрдирд╛рддреА рд╣реИ рдФрд░ рд╡рд┐рд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рддреА рд╣реИ, рдПрдХ рдЕрд░реНрдз-рд╡рд╛рд░реНрд╖рд┐рдХ рдЕрднрд┐рдпрд╛рди рдХреЗ рд▓рд┐рдПред рдЬрдм рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдкрдбрд╝реЛрд╕реА рдЧрд▓реА рдореЗрдВ рдПрдХ рдирдпрд╛ рд╢реЙрдкрд┐рдВрдЧ рд╕реЗрдВрдЯрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рддрд╛рдХрдд рдХреА рдЧрдгрдирд╛ рдЖрдзреБрдирд┐рдХ рд╕рдореВрд╣реЛрдВ рдкрд░ рдХреА рдЧрдИ рдереАред рдЬрдм рдореИрдВ рдпрд╣ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдкреВрд░реЗ рджрд┐рд▓ рд╕реЗ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рдЕрдЪреНрдЫрд╛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рд╣реЛред

Source: https://habr.com/ru/post/In191164/


All Articles