Pääsiäissunnuntain päivämäärä lasketaan näin:
function CalcEasterSunday(Year:Integer):TDatetime;
var
C,N,K,I,J,L,M,D : Integer;
begin
C := Year DIV 100;
N := Year MOD 19; // N := Year - 19 * (Year DIV 19);
K := (C - 17) DIV 25;
I := C - C DIV 4 - (C - K) DIV 3 19 * N 15;
I := I - 30 * (I DIV 30);
I := I - (I DIV 28) * (1 - (I DIV 28) * (29 DIV (I 1)) * ((21 - N) DIV 11));
J := Year Year DIV 4 I 2 - C C DIV 4;
J := J MOD 7; // J := J - 7 * (J DIV 7);
L := I - J;
M := 3 (L 40) DIV 44;
D := L 28 - 31 * (M DIV 4);
Result := EncodeDate(Year, M, D);
end;
----
Tämän pitäisi toimia kaikilla Delphin versioilla. JOS ei toimi delphi 1:llä, kokeile muuttaa kokonaislukujen tyyppi Integer -> longint.
Huomaa: TDatetime -tyypin määrittely vaihtui Delphi 2.0:ssa Delphi 1:een verrattuna. Delphi 1 laski vuodet luvusta 1, mutta Delphi 2.0:ssa ja uudemmissa vuosi enkoodataan TDatetime -tyyppiin samoin kuin eräissä Microsoftin ohjelmistoissa.
function CalcEasterSunday(Year:Integer):TDatetime;
var
C,N,K,I,J,L,M,D : Integer;
begin
C := Year DIV 100;
N := Year MOD 19; // N := Year - 19 * (Year DIV 19);
K := (C - 17) DIV 25;
I := C - C DIV 4 - (C - K) DIV 3 19 * N 15;
I := I - 30 * (I DIV 30);
I := I - (I DIV 28) * (1 - (I DIV 28) * (29 DIV (I 1)) * ((21 - N) DIV 11));
J := Year Year DIV 4 I 2 - C C DIV 4;
J := J MOD 7; // J := J - 7 * (J DIV 7);
L := I - J;
M := 3 (L 40) DIV 44;
D := L 28 - 31 * (M DIV 4);
Result := EncodeDate(Year, M, D);
end;
----
Tämän pitäisi toimia kaikilla Delphin versioilla. JOS ei toimi delphi 1:llä, kokeile muuttaa kokonaislukujen tyyppi Integer -> longint.
Huomaa: TDatetime -tyypin määrittely vaihtui Delphi 2.0:ssa Delphi 1:een verrattuna. Delphi 1 laski vuodet luvusta 1, mutta Delphi 2.0:ssa ja uudemmissa vuosi enkoodataan TDatetime -tyyppiin samoin kuin eräissä Microsoftin ohjelmistoissa.
Vastaukset
Vanhimmat
Ei vielä vastauksia
Aloittaja odottaa vastauksia. Kerro oma näkemyksesi ensimmäisenä.