![]() |
Datum auf Fehler prüfen - Deutsches Datumsformat
Hallo Profis
Überlege gerade, wie ich mit 'ner kurzen Funktion ein Datum auf Plausibilität prüfen kann. Vorab mein Brainstorming: Soll bei deutschem Datum funktionieren.
Delphi-Quellcode:
Wird das ungefähr so hinhauen oder muß ich das Datum selber zerpflücken?
function IsDateOk(d,m,y:integer):boolean;
begin result:=true; //try EncodeDate(y,m,d); //OnError.. result:=false //except ... //finally end; procedure TForm1.Button1Click(Sender: TObject); var test:boolean; begin test:=IsDateOk(30,2,-1); Edit1.Text:=BoolToStr(test); end; end. EncodeDtate bringt ja schöne Abstürze bei inkorrekten Übergabewerten. Gruß Wolfgang |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Ich weiß, dass ist keine direkte Antwort auf deine Frage, aber:
.. was hälst du von TDateTimePicker? Mit der Eigenschaft "nur Datum" ziemlich nützlich, denn der Benutzer kann keine falschen Daten eintragen. //Edit: Du kannst natürlich auch alles manuell grundlegend prüfen: Tag >= 1 und <= 31, Monat >= 1 und <= 12 usw. Danach in EncodeDate reinhalten. Keine Ahnung, obs funktioniert :mrgreen: |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Delphi-Quellcode:
If StrToDateDef( <string>, <default>, Format) = <Default> then // Datum im Strig nicht korrekt
|
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
@BackOrifice
BackOrifice hat geschrieben: Zitat:
Trotzdem danke Wolfgang |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Gibts nicht auch
![]() |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Ja, es gibt tryStrToDate.
Kleines Beispiel für Wolfgang:
Delphi-Quellcode:
var str : string;
d : TDateTime; begin str := InputBox('Datum', 'Bitte geben sie ein Datum ein', ''); if tryStrToDate(str, d) then begin showMessage('Sie haben ' + FormatDateTime('ddd, dd. MMMM yyyy', d) + ' eingegeben') end; end; |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
@Nersgatt
Danke, da bringt mich schon weiter nach vorn. Der Code scheint sogar absturzfest zu sein ;-) Hast Du noch die Variante mit dem internationalen Format? Jetzt muß ich mir nur noch den Datumsstring basteln. :-) Gruß Wolfgang |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Der Code arbeitet sowohl auf einem Deutschen Windows, als auch auf einem Englischen Windows korrekt. Halt je nach Einstellung des Systems.
Geh mal in die Systemsteuerung -> "Regions- und Sprachoptionen" und stell Deinen PC z.B. auf Englisch um. Und dann probiere den Codeschipsel noch mal aus. Jens |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
Mein vorlaüfiges Zwischenergebnis sieht jatzt so aus:
Wie ich Euch kenne, ist der Code noch optimierbar ;-) Zumindest funktioniert es so erst einmal.
Delphi-Quellcode:
Gruß
//Wolfgang Mix - Delphi-PRAXiS
//Gültigkeitsbereich 1.1.0001 ... 31.12.9999 function IsDateOk(d,m,y:integer):boolean; var ds,ms,ys,dates:string; d1:TDateTime; begin result:=false; //Nullen davor, wenn <10 str(d,ds);if d<10 then ds:='0'+ds; str(m,ms);if m<10 then ms:='0'+ms; str(y,ys); //Jahr immer 4-stellig while length(ys)<4 do ys:='0'+ys; dates:=ds+'.'+ms+'.'+ys; //Dank Nersgatt - DP if tryStrToDate(dates,d1) then result:=true; end; procedure TForm1.Button1Click(Sender: TObject); Begin Edit1.Text:=BoolToStr(IsDateOk(25,13,1950)); end; Wolfgang |
Re: Datum auf Fehler prüfen - Deutsches Datumsformat
@Nersgatt
Prima, nochmal danke :-) Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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