AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erstellen eines Datum-überprüfers

Ein Thema von Mo53 · begonnen am 16. Mai 2021 · letzter Beitrag vom 17. Mai 2021
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#5

AW: Erstellen eines Datum-überprüfers

  Alt 16. Mai 2021, 10: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.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz