Delphi World - Вычисление немецких праздников
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Вычисление немецких праздников

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

unit Feiertage;
 // Unit Holidays; 

interface

 uses
   Windows, SysUtils;

 // Declare a structure to hold the Information 
// Deklarieren der Struktur, um die Feiertage abzuspeichern 
type
   THoliday = record
     Date: TDateTime;
     Name: string;
   end;
   THolidayTable = array of THoliday;

 // Function to call to get the Holiday Table with all Holidays of a year 
// Der Funktionsaufruf, um die Feiertage eines Jahres abzufragen 
function GetHolidayTable(Year: Word): THolidayTable;

 implementation

 function TUrlaubsForm.GetHolidayTable(Year: Word): THolidayTable;

   // Function to add a holiday by Day and Month 
  // Funktion, um einen Feiertag uber seinen Tag\Monat hinzuzufugen 
  procedure AddHoliday(DD, MM: Word; HDName: string); overload;
   begin
     SetLength(Result, High(Result) + 2);
     with Result[High(Result)] do
     begin
       Date := EncodeDate(Year, MM, DD);
       Name := HDName;
     end;
   end;

   //Function to add holiday by date serial 
  //Funktion, um den Feiertag uber die Datumsseriennummer hinzuzufugen 
  procedure AddHoliday(HDDate: TDateTime; HDName: string); overload;
   begin
     SetLength(Result, High(Result) + 2);
     with Result[High(Result)] do
     begin
       Date := HDDate;
       Name := HDName;
     end;
   end;

   // Function to get easter sunday 
  // Function zur Berechnung des Ostersonntags 
  function GetEasterDate(YYYY: Word): TDateTime;
   var
     A, B, C, D, E, F, G, H, I, K, L, M, N, P: Word;
     DD, MM: Word;
   begin
     a := YYYY mod 19;
     b := YYYY div 100;
     c := YYYY mod 100;
     d := b div 4;
     e := b mod 4;
     f := (b + 8) div 25;
     g := (b - f + 1) div 3;
     h := (19 * a + b - d - g + 15) mod 30;
     i := c div 4;
     k := c mod 4;
     l := (32 + 2 * e + 2 * i - h - k) mod 7;
     m := (a + 11 * h + 22 * l) div 451;
     n := (h + l - 7 * m + 114) div 31;
     p := (h + l - 7 * m + 114) mod 31 + 1;
     DD := p;
     MM := n;
     Result := EncodeDate(YYYY, MM, DD);
   end;

    var
   EDate: TDateTime;
 begin
   // Add fixed holidays 
  // Hinzufugen der festen Feiertage 
  AddHoliday(1, 1, 'Neujahr');
   AddHoliday(1, 5, 'Tag der Arbeit');
   AddHoliday(3, 10, 'Tag der deutschen Einheit');
   AddHoliday(31, 10, 'Reformationstag');
   // AddHoliday(24, 12, 'Heiligabend'); 
  AddHoliday(25, 12, '1. Weihnachtsfeiertag');
   AddHoliday(26, 12, '2. Weihnachtsfeiertag');
   // AddHoliday(31, 12, 'Silvester'); 
  // Add holidays relative to easter sunday 
  // Hinzufugen der Feiertage, die von Ostern abhangen 
  EDate := GetEasterDate(Year);
   AddHoliday(EDate, 'Ostersonntag');
   AddHoliday(EDate - 2, 'Karfreitag');
   AddHoliday(EDate + 1, 'Ostermontag');
   AddHoliday(EDate + 39, 'Christi Himmelfahrt');
   AddHoliday(EDate + 49, 'Pfingstsonntag');
   AddHoliday(EDate + 50, 'Pfingstmontag');
   // Gets 3rd Wednesday in November 
  // Ermittelt den 3. Mitwoch im November 
  EDate := EncodeDate(Year, 11, 1);
   EDate := EDate + ((11 - DayOfWeek(EDate)) mod 7) + 14;
   AddHoliday(EDate, 'Bu?- und Bettag');
 end;

 end.

 // This Units works since the year 1584 
// Diese Unit arbeitet mit Jahreszahlen nach 1584 
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования