Hallo!
Danke für die Tips. Ich habe mich zuerst mal mit den DateUtils befasst - das Erbegnis ist eine sehr schwammige Milchmädchenrechnung:
Delphi-Quellcode:
procedure TForm1.sp_rechneClick(Sender: TObject);
var
Jahre_gedient,
Monate_gesamt, Monate_effektiv,
Tage_gesamt, Tage_effektiv: integer;
begin
//Überprüfung Felder
If (e_eintritt.Text='') OR (e_dze.Text='') then
begin
ShowMessage('Bitte das Eintrittsdatum und DZE ausfüllen');
exit;
end
else
//ab hier ist die validierung okay
begin
//Speicherung der Daten in Variablen
diensteintritt:=StrToDate(e_eintritt.Text);
dze:=StrToDate(e_dze.Text);
heute:=now;
//Eigentliche Berechnung
//--> hier: die vergangenen Jahre von Eintritt bis heute
Jahre_gedient:= YearsBetween(diensteintritt, heute);
//--> hier: die gedienten Monate abzüglich der Jahre
Monate_gesamt := MonthsBetween(diensteintritt, heute);
Monate_effektiv:= (Monate_gesamt) - (Jahre_gedient*12);
//--> hier: die vergangenen Tage (ohne Schaltjahr!)
Tage_gesamt := DaysBetween(diensteintritt, heute);
Tage_effektiv:= ((Tage_gesamt) - (Jahre_gedient*365)) - (Monate_effektiv*30);
l_2eintritt.Caption:='Du hast seit deinem Dienstantritt am '+ e_eintritt.Text;
l_jahre.Caption:=IntToStr(Jahre_gedient)+' Jahr(e), '+ IntToStr(Monate_effektiv)+' Monate';
l_zeit.Caption:=IntToStr(Tage_effektiv)+ ' Tage,';
end;
end;//END IF
Die Anzahl der Jahre und Monate sind exakt, nur ab den Tagen wirds schwierig denn ich muss noch irgendwie die Schaltjahre mit berücksichten o.O Evt. sollte ich mir mal den Code von dahead näher anschauen.
*grübel*