Registriert seit: 27. Nov 2017
2.490 Beiträge
Delphi 7 Professional
|
AW: Erstellen eines Datum-überprüfers
16. Mai 2021, 11:43
Mal aus Spass ein Pascalscript (ohne Verwendung irgendwelcher Datumsfunktionen):
Delphi-Quellcode:
program Kalender;
function IfThen(b : Boolean; sOk : String; sNotOk : String) : String;
begin
case b of
true : Result := sOk;
false : Result := sNotOk;
end;
end;
function IsSchaltjahr(Jahr : Integer) : Boolean;
begin
Result := (Jahr mod 4 = 0) and ((Jahr mod 100 <> 0) or (Jahr mod 400 = 0));
end;
function IsBetween(i : Integer; iMin : Integer; iMax : Integer): Boolean;
begin
Result := (i >= iMin) and (i <= iMax);
end;
function IsTagOk(Tag : Integer; Monat : Integer; Jahr : Integer) : Boolean;
begin
Result := false;
if IsBetween(Monat,1,12) then begin
case Monat of
1,3,5,7,8,10,12 : Result := IsBetween(Tag,1,31);
2 : case IsSchaltjahr(Jahr) of
true : Result := IsBetween(Tag,1,29);
false : Result := IsBetween(Tag,1,28);
end;
4,6,9,10 : Result := IsBetween(Tag,1,30);
end;
end;
end;
var
Jahr : Integer;
Monat : Integer;
Tag : Integer;
begin
Write('Bitte das Jahr eingeben:');
ReadLn(Jahr);
Write('Bitte den Monat eingeben:');
ReadLn(Monat);
Write('Bitte den Tag eingeben:');
ReadLn(Tag);
// Kalenderreform von 1582, davor gilt die Schaltjahrberechnung nicht.
if IsBetween(Jahr,1583,3000) then begin
WriteLn(Format('Das Jahr %d ist gültig und %s Schaltjahr.',[Jahr, IfThen(IsSchaltjahr(Jahr),'ein','kein')]));
WriteLn(Format('Der Monat %d ist %sgültig.',[Monat, IfThen(IsBetween(Monat,1,12),'','un')]));
WriteLn(Format('Der Tag %d ist %sgültig.',[Tag, IfThen(IsTagOk(Tag, Monat, Jahr),'','un')]));
end else begin
WriteLn(Format('Das Jahr %d liegt außerhalb des Gültigkeitsbereiches.',[Jahr]));
end;
end.
@DieDolly:
Habe schon deutlich "schlimmeren" Code von promovierten Informatikern gesehen.
Wir haben seinerzeit jedenfalls nicht gelernt, wie man Code "schön" schreibt, sondern nur, wie man die für die Problemstellung erforderliche Logik richtig entwickelt und dann "irgendwie" funktionsfähig implementiert.
Und ja: Viele Implementierungsfehler lassen sich in "schöner Quelltextoptik" deutlich leichter auffinden, vor allem, wenn die optische Struktur der logischen Struktur entspricht.
|