Hallo !<p>
Vor kurzem suchte ich eine Routine zum Berechnen des Osterdatums.<br>
Ich fand diese in der Zeitschrift ct Heft 2/2002 S. 193 als<br>
Visual Basic Excel Makro.<br>
Ich habe den Code in Delphi umgesetzt (s. unten) aber egal welche<br>
vierstellige Jahreszahl man eingibt, es wird immer ein Donnerstag<br>
als Ergebnis präsentiert !<p>
Ich habe den Text mehrfach überprüft, konnte aber keine Abweichungen<br>
vom Original erkennen.<p>
Vielen Dank für eventuelle Hilfe !<p>
Gruß Marcus<p>
<pre>
function TMonthTable.Ostersonntag(intJahr: Integer): TDateTime;
var intA, intB, intC, intD, intE ,intF: Integer;
intTag, intMonat: Integer;
begin
intA:=intJahr mod 19;
intB:=intJahr mod 4;
intC:=intJahr mod 7;
intD:=(19*intA+24) mod 30;
intE:=(2*intB+4*intC+6*intD+5) mod 7;
intTag:=22+intD+intE;
intMonat:=3;
if intTag>31 then begin
intTag:=intD+intE-9;
intMonat:=3;
end;
if (intTag=26) and (intMonat=4) then
intTag:=19;
if (intTag=25) and (intMonat=4)and (intD=28) and (intE=6) and (intA>10) then
intTag:=18;
Result:=EncodeDate(intJahr,intMonat,intTag);
end;
</pre>
Vor kurzem suchte ich eine Routine zum Berechnen des Osterdatums.<br>
Ich fand diese in der Zeitschrift ct Heft 2/2002 S. 193 als<br>
Visual Basic Excel Makro.<br>
Ich habe den Code in Delphi umgesetzt (s. unten) aber egal welche<br>
vierstellige Jahreszahl man eingibt, es wird immer ein Donnerstag<br>
als Ergebnis präsentiert !<p>
Ich habe den Text mehrfach überprüft, konnte aber keine Abweichungen<br>
vom Original erkennen.<p>
Vielen Dank für eventuelle Hilfe !<p>
Gruß Marcus<p>
<pre>
function TMonthTable.Ostersonntag(intJahr: Integer): TDateTime;
var intA, intB, intC, intD, intE ,intF: Integer;
intTag, intMonat: Integer;
begin
intA:=intJahr mod 19;
intB:=intJahr mod 4;
intC:=intJahr mod 7;
intD:=(19*intA+24) mod 30;
intE:=(2*intB+4*intC+6*intD+5) mod 7;
intTag:=22+intD+intE;
intMonat:=3;
if intTag>31 then begin
intTag:=intD+intE-9;
intMonat:=3;
end;
if (intTag=26) and (intMonat=4) then
intTag:=19;
if (intTag=25) and (intMonat=4)and (intD=28) and (intE=6) and (intA>10) then
intTag:=18;
Result:=EncodeDate(intJahr,intMonat,intTag);
end;
</pre>
Comment