AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Datum auf Fehler prüfen - Deutsches Datumsformat
Thema durchsuchen
Ansicht
Themen-Optionen

Datum auf Fehler prüfen - Deutsches Datumsformat

Ein Thema von Wolfgang Mix · begonnen am 22. Sep 2009 · letzter Beitrag vom 23. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#1

Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:14
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:
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.
Wird das ungefähr so hinhauen oder muß ich das Datum selber zerpflücken?
EncodeDtate bringt ja schöne Abstürze bei inkorrekten Übergabewerten.

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#2

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:23
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
Henning
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:29
If StrToDateDef( <string>, <default>, Format) = <Default> then // Datum im Strig nicht korrekt
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:31
@BackOrifice

BackOrifice hat geschrieben:

Zitat:
.. was hälst du von TDateTimePicker? Mit der Eigenschaft "nur Datum" ziemlich nützlich, denn der Benutzer kann keine falschen Daten eintragen.
Garnix, andere Datumroutinen sollen erst gestartet werden, wenn das Datum okay ist.

Trotzdem danke

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:41
Gibts nicht auch Delphi-Referenz durchsuchenTryStrToDateTime ?
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 14:54
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;
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 18:36
@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
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 19:15
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
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 19:16
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:
//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;
Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 22. Sep 2009, 19:19
@Nersgatt

Prima, nochmal danke

Gruß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz