@Luckie:
In deinem Tut:
1.) die ShowMessage() sollte durch eine Excpetion ersetzt werden. Der Code als "Highlevel" Funktion sollte auch eine Fehlerüberprüfung haben. "Highlevel" Funktionen können demzufolge auch Exceptions auslösen. Paralell dazu könnte man die Funktion so umbasteln wie es in StrToIntDef() der Fall ist. Dies würde die Exceptions beseitigen und einen Default Wert zuweisen.
2.) ValidatDay() ist eine Schlampigkeit, denn das eine fehlende "e" für ValidateDay() hätte man auch noch schreiben können
Es sei denn man würde IsValidDay() benutzen.
3.) Button1.Enabled := IsValidDay and IsValidMonth and IsvalidYear; stellt klip und klar eine Boolsche Berechnung dar. Man benötigt keinerlei if then else !
Selbiges in ValidatDay()
4.) ALLE Varibalen beginnen mit Großbuchstaben !
5.) ValidatDay(d: string): Boolean; ist inkonsitent -> IsValidDay(const Value: String): Boolean;
6.) edtDay.Text -> EditDay.Text oder EDay.Text
7.) Extended für die Berechnungen ist überdimensioniert, Default Floatingpoint sollte Double sein.
8.) CalcJulYear(Day, Month, Year: DWord): Extended -> CalcJulianYear(Year: Word; Month: Word = 1; Day: Word = 1): Word;
DWord ist ein Windows
API Datentyp kein PASCAL Datentyp. In PASCAL wäre es Cardinal.
Gruß Hagen