AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Arbeitstage berechnen

Ein Thema von LogoPie · begonnen am 25. Jan 2005 · letzter Beitrag vom 23. Mai 2009
 
LogoPie

Registriert seit: 7. Okt 2003
106 Beiträge
 
Delphi 5 Professional
 
#13

Re: Arbeitstage berechnen

  Alt 26. Jan 2005, 14:18
Wie so oft nur ne kleinigkeit

Hier nun das Ergebnis
Unit 1
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2, Feiertage;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var hdays : THolidayTable;
    i : Integer;
  // j : Integer;
begin
     hdays:=GetHolidayTable(2005);
   // Edit1.Text := IntToDate(j);
     listbox1.items.Clear;
     for
        i:=0 to high(hdays)do
        listbox1.items.Add(DateToStr(hdays[i].date)+' '+hdays[i].name);
end;

end.
Wie sicher schon jemand bemerkt hat habe ich versucht das Jahr über ein Editfeld einzugeben
mit mäßigem erfolg. Habe diverse Datentypen probiert, aber immer flogen mir neue Fehlermeldungen an
den Kopf. Vielleicht weiß ja jemand eine Lösung. Meist ging es um konfligte mit Date und Word.

Unit 2
Delphi-Quellcode:
unit Unit2;

interface

uses Windows, SysUtils;

type
    THoliday = Record
        Date: TDateTime;
        Name: String;
    End;
    THolidayTable = Array Of THoliday;

    Function GetHolidayTable(Year: Word): THolidayTable;

implementation

Function GetHolidayTable(Year: Word): THolidayTable;

    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;

    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 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
    AddHoliday(1, 1, 'Neujahr');
    AddHoliday(1, 5, 'Tag der Arbeit');
    AddHoliday(3, 10, 'Tag der deutschen Einheit');
    AddHoliday(25, 12, '1. Weihnachtsfeiertag');
    AddHoliday(26, 12, '2. Weihnachtsfeiertag');
    AddHoliday(1, 11, 'Allerheiligen');
    EDate := GetEasterDate(Year);
    AddHoliday(EDate + 60, 'Fronleichnam');
    AddHoliday(EDate - 2, 'Karfreitag');
    AddHoliday(EDate + 1, 'Ostermontag');
    AddHoliday(EDate + 39, 'Christi Himmelfahrt');
    AddHoliday(EDate + 50, 'Pfingstmontag');
End;

end.
Used Advantage Database Server
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz