![]() |
AW: Erstellen eines Datum-überprüfers
Zitat:
|
AW: Erstellen eines Datum-überprüfers
Dankeschön, ich habe es nochmal korrigiert, außer das mit dem ersten If da es ja auch überprüft ob der Tag >= 1 ist, falls eine negative Zahl eingegeben wird, sollte es dann die Fehlermeldung anzeigen.
Hier nochmal die korrigierte Version:
Delphi-Quellcode:
{$APPTYPE CONSOLE}
{$R+,Q+ X-} uses System.SysUtils; var Tag: integer; Monat: integer; Jahr: integer; begin write('Bitte den Tag eingeben '); readln(Tag); write('Bitte den Monat eingeben '); readln(Monat); write('Bitte das Jahr eingeben '); readln(Jahr); if (Tag >= 1) and (Tag <= 31) then if (Monat >= 1) and (Monat <= 12) then if (Jahr >= 1) and (Jahr <= 3000) then case Monat of 2: begin if (Jahr mod 4 = 0) and (Jahr mod 100 <> 0) or (Jahr mod 400 = 0) then begin if (Tag <= 29) then begin writeln(Tag, ' ist zulässig.'); readln; end else begin writeln(Tag, ' ist unzulässig.'); readln; end; end else begin if (Tag <= 28) then writeln(Tag, ' ist zulässig.') else writeln(Tag, ' ist unzulässig.'); end; end; 1, 3, 5, 7, 8, 10, 12: begin if (Tag <= 31) then begin writeln('Der ', Tag, '. ist gültig.'); readln; end else begin writeln('Der ', Tag,'. ist ungültig.'); readln; end; end; 4, 6, 9, 11: begin if (Tag <= 30) then begin writeln('Der ', Tag, '. ist gültig.'); readln; end else begin writeln('ungültig'); readln; end; end; end else begin writeln('Jahr ungültig.'); readln; end else begin writeln('Monat ungültig.'); readln; end else begin writeln('Tag ungültig.'); readln; end; end. |
AW: Erstellen eines Datum-überprüfers
Zitat:
|
AW: Erstellen eines Datum-überprüfers
Ist es untersagt die von Delphi bereitgestellten Units zu verwenden?
Eigentlich sollte man doch lernen nichts zu programmieren was es nicht schon gibt, also wozu das Rad neu erfinden? himitsu hat bereits viele vorgefertigte methoden erwähnt. Ich würde ja nach einem reinen vortest (tag >0 <32) (monat >0 <13)) (jahr >0 <=9999) das ganze in ein TDateTime umwandeln ( ![]() Schön zu sehen wie es sich entwickelt, diese ursprünglichen if's waren echt sehr unübersichtlich, Danke an Emil fürs Taggen, das Case ist eine sehr gute alternative Verbesserung, weiter so und Willkommen in der DP! |
AW: Erstellen eines Datum-überprüfers
Zum Spaß noch ein Ansatz:
Delphi-Quellcode:
@KodeZwerg:
var
Tag : Integer; Monat : Integer; Jahr : Integer; TagOK : Boolean; MonatOk : Boolean; JahrOk : Boolean; IstSchaltjahr : Boolean; begin write('Bitte den Tag eingeben '); readln(Tag); write('Bitte den Monat eingeben '); readln(Monat); write('Bitte das Jahr eingeben '); readln(Jahr); TagOk := (Tag >= 1) and (Tag <= 31); MonatOk := (Monat >= 1) and (Monat <= 12); JahrOk := (Jahr >= 1) and (Jahr <= 3000); IstSchaltJahr := (Jahr mod 4 = 0) and (Jahr mod 100 <> 0) or (Jahr mod 400 = 0); if TagOk and MonatOk and JahrOk then begin case Monat of 2: case IstSchaltjahr of true : TagOk := (Tag <= 29); false : TagOk := (Tag <= 28); end; 1, 3, 5, 7, 8, 10, 12 : TagOk := (Tag <= 31); 4, 6, 9, 11 : TagOk := (Tag <= 30); end; end; writeln('Als Datum wurde der ', Tag,'.', Monat,'.', Jahr,' eingegeben:'); case TagOk of true : writeln('Der Tag ', Tag, ' ist gültig.'); false : writeln('Der Tag ', Tag, ' ist ungültig.'); end; case MonatOk of true : writeln('Der Monat ', Monat, ' ist gültig.'); false : writeln('Der Monat ', Monat, ' ist ungültig.'); end; case JahrOk of true : writeln('Das Jahr ', Jahr, ' liegt im zulässigen Bereich.'); false : writeln('Das Jahr ', Jahr, ' liegt ausserhalb des zulässigen Bereiches.'); end; case JahrOk and IstSchaltjahr of true : writeln('Bei dem Jahr ', Jahr,' handelt es sich um ein Schaltjahr.'); false : writeln('Bei dem Jahr ', Jahr,' handelt es sich nicht um ein Schaltjahr.'); end; readln; end. Es geht erstmal darum die Grundzüge des Programmierens und die Umsetzung einer Aufgabenstellung in entsprechende Logik zu lernen. Das dazu Delphi benutzt wird, ist nachrangig. Daher ist es momentan noch nicht hilfreich in Delphi vorhanden Funktionalitäten zu nutzen, auch wenn dies eigentlich naheliegend erscheint. Die delphieigenen Funktionen kann man dann gerne zur Verifizierung der eigenen Ergebnisse nutzen. Dann lernt man direkt beides ;-) |
AW: Erstellen eines Datum-überprüfers
@Delphi.Narium. Super gemacht alles drin und die Rückgabe so wie sie sein sollte.
Kleine Einschränkung Formatierung könnte besser sein. Aber jedem das seine. Meine wäre so! LOL.. ;)
Delphi-Quellcode:
program ueb03;
{$APPTYPE CONSOLE} {$R+,Q+ X-} uses System.SysUtils; var Tag: Integer; Monat: Integer; Jahr: Integer; TagOK: Boolean; MonatOk: Boolean; JahrOk: Boolean; IstSchaltjahr: Boolean; begin write('Bitte den Tag eingeben '); readln(Tag); write('Bitte den Monat eingeben '); readln(Monat); write('Bitte das Jahr eingeben '); readln(Jahr); TagOK := (Tag >= 1) and (Tag <= 31); MonatOk := (Monat >= 1) and (Monat <= 12); JahrOk := (Jahr >= 1) and (Jahr <= 3000); IstSchaltjahr := (Jahr mod 4 = 0) and (Jahr mod 100 <> 0) or (Jahr mod 400 = 0); if TagOK and MonatOk and JahrOk then begin case Monat of 2: case IstSchaltjahr of true: TagOK := (Tag <= 29); false: TagOK := (Tag <= 28); end; 1, 3, 5, 7, 8, 10, 12: TagOK := (Tag <= 31); 4, 6, 9, 11: TagOK := (Tag <= 30); end; end; writeln('Als Datum wurde der ', Tag, '.', Monat, '.', Jahr, ' eingegeben:'); case TagOK of true: writeln('Der Tag ', Tag, ' ist gültig.'); false: writeln('Der Tag ', Tag, ' ist ungültig.'); end; case MonatOk of true: writeln('Der Monat ', Monat, ' ist gültig.'); false: writeln('Der Monat ', Monat, ' ist ungültig.'); end; case JahrOk of true: writeln('Das Jahr ', Jahr, ' liegt im zulässigen Bereich.'); false: writeln('Das Jahr ', Jahr, ' liegt ausserhalb des zulässigen Bereiches.'); end; case JahrOk and IstSchaltjahr of true: writeln('Bei dem Jahr ', Jahr, ' handelt es sich um ein Schaltjahr.'); false: writeln('Bei dem Jahr ', Jahr, ' handelt es sich nicht um ein Schaltjahr.'); end; readln; end. |
AW: Erstellen eines Datum-überprüfers
Bei diesem ganzen Case true false werfe ich mal IfThen in den Raum.
|
AW: Erstellen eines Datum-überprüfers
Zitat:
tsss.. |
AW: Erstellen eines Datum-überprüfers
hallo,
zur Erinnerung ![]() :-D wurde aber schon drauf hingewiesen #5 Gruß |
AW: Erstellen eines Datum-überprüfers
@KodeZwerg
Leider ist uns die Benutzung von Dingen die wir noch nicht hatten untersagt. Ich verstehe ehrlich gesagt auch nicht warum die uns das Leben nicht leichter machen, aber ich denke die machen das um uns das zu veranschaulichen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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