Datum-Kalkulation. Möglich?!

Es ist mit bekannt, dass ich in Delphi (Ich arbeite mit Delphi 6 ENTERPRISE) mit dem Befehl DateToStr zum Beispiel auf das aktuelle Datum der Windows-System-Uhr zugreifen kann.

Wie aber kann ich einfach mit dem Datum rechnen??

Mein Problem:
Ich habe einen Tag X (z.B. der 5.1.2002) und ich möchte beim Programmstart anzeigen lassen, wieviele Tage seit dem Tag X vergangen sind.
Es handelt sich nicht um so eine Routine für Shareware, also macht es nichts, wenn man das Programm ´verarschen´ kann, indem man die Systemuhr einfach umstellt :wink:

WER KANN MIR HIER HELFEN?

MfG Christian.

Hi Christian

Leider Programiere ich nicht in Delphi (sondern in TPascal7)
denoch denke ich das ich Dir weiterhelfen kann.
Hier gebe ich Dir mächtige Routinen zur Berechnung von Daten
sie sind sehr umfangreich, da sie auch sehr genau sind.
(Schaltjahre ,
gelöschte Daten durch den Papst am 04.10.1582 usw.)
Diese Functionen und Proceduren sollten under Delphi laufen.

Hier ein Beispielprogramm mit den Routinen:

Function SchaltJahr(j:LongInt):Boolean;
Begin
If (((j Mod 1000)Or(j Mod 400=0)) Or (j2 Then Inc(m) Else Begin Dec(j); Inc(m,13); End;
jd:=(1461*j Div 4)+(153*m Div 5)+t+1720995;
If d>=greg Then Begin
a:=j Div 100;
jd:=jd+2-a+(a Div 4);
End;
XTage:=jd;
End;

{Berechnet von dem JulianischenDatum ein Datum}
Procedure JDatum(jd:LongInt;Var t,m,j:LongInt);
Const greg :LongInt=2299161;vchr :LongInt=1721423;
Var alpha,a,b,c,d :Longint;
Begin
If jd>vchr Then Inc(jd) Else Dec(jd,365);
If jd2 Then j:=c-4716 Else j:=c-4715;
If t=0 Then Begin
Dec(m);
If m In [1,3,5,7,8,10,12] Then t:=31;
If m In [4,6,9,11] Then t:=30;
If m In [2] Then Begin
If Schaltjahr(j) Then t:=29 Else t:=28;
End;
If m=0 Then Begin
t:=31; m:=12; Dec(j);
End;
End;
End;

Var Datum1,Datum2:LongInt;
Begin
Datum1:=XTage(05,01,2002);
Datum2:=XTage(13,01,2002);
Write(‚vom 05.01.2002 bis zum 13.01.2002 sind es: ‚);
WriteLn(Datum2-Datum1,‘ Tage.‘);
WriteLn('der 05.01.2002 ist ein ',Wochentag(Datum1));
WriteLn('der 13.01.2002 ist ein ',Wochentag(Datum2));
Write(‚Das Jahr 2002 ist ‚);
If SchaltJahr(2002) Then Write(‚ein‘) Else Write(‚kein‘);
WriteLn(‘ Schaltjahr‘);
End.

Wenn Du aus irgend welchen Gründen mit der Funktion XTage nicht
zurechtkommen solltest dann Melde dich einfach nochmal bei mir.
Mit der Procedure JDatum kannst du die LongInt’s wieder in ein
Datumsformat umwandeln.

Gruß, SpeedyElektron

Danke!
Das Problem ist jetzt vollständig gelöst.

MfG Christian.