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 2 von 2     12   
Benutzerbild von Nersgatt
Nersgatt

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

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 06:23
Wenn Du das Datum als String vorliegen hast, bietet sich TryStrToDate an. Dann würde ich nicht daraus einen Datumsstring zusammenbasteln und dann prüfen, sondern die Elemente einzeln prüfen. Das ist wie links blinken und rechts abbiegen Mit Deiner Funktion bekommst Du bei einem Englischen Windows Probleme.

Ich würde die Elemente einzeln prüfen:

Delphi-Quellcode:
//Gültigkeitsbereich 1.1.0001 ... 31.12.9999
function IsDateOk(d,m,y:integer):boolean;
begin

  if (y < 1) or (y > 9999) then
    result := False
  else if (m < 1) or (m > 12) then
    result := false
  else if (d < 1) or (d > DaysInAMonth(y, m)) then
    result := false
  else
    result := True;

end;
(DateUtils muss für DaysInAMonth eingebunden werden)

Jens
Jens
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
110 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 07:12
Verstehe auch nicht, was das wandeln in Strings soll.

Delphi-Quellcode:
function IsDateOk(d,m,y:Word):boolean;
begin
 Try
  EncodeDate(Y,M,D);
  Result := True;
 Except
  Result := False;
 End;
end;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 07:20
Zitat von Zoot:
Verstehe auch nicht, was das wandeln in Strings soll.
Da wird nix in Strings verwandelt, sondern in TDateTime. Und vor dem Konvertieren wird eine Gültigkeitsprüfung vorgenommen.

Ich würde eher hierzu tendieren, da spart man sich die Exceptions.
Delphi-Quellcode:
If TryEncodeDate(Year, Month, Day, TheDate) Then
  ShowMessage(Format('Das Datum %s ist korrekt',[DateToStr(TheDate)]));
Merke: Die Delphi-Utilities können ne ganze Menge. Man muss nicht mehr viel selbst basteln.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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
 
#14

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 08:11
Danke für die Antworten
Das ist mit der Variante von alzaimar jetzt übrig geblieben:

Delphi-Quellcode:
function IsDateOk(d,m,y:word):boolean;
var mydate:TDateTime;
begin
    result:=false;
    mydate:=EncodeDate(y,m,d);
    If TryEncodeDate(y,m,d,myDate) Then result:=true
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  Edit1.Text:=BoolToStr(IsDateOk(32,12,1));
end;

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 Nersgatt
Nersgatt

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

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 08:13
Warum nicht einfach so:
Delphi-Quellcode:
function IsDateOk(d,m,y:word):boolean;
var mydate:TDateTime;
begin
    result := TryEncodeDate(y,m,d,myDate);
end;
Jens
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

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

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 08:58
Zitat von Wolfgang Mix:
Danke für die Antworten
Das ist mit der Variante von alzaimar jetzt übrig geblieben:

Delphi-Quellcode:
function IsDateOk(d,m,y:word):boolean;
var mydate:TDateTime;
begin
    result:=false;
    mydate:=EncodeDate(y,m,d);
    If TryEncodeDate(y,m,d,myDate) Then result:=true
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  Edit1.Text:=BoolToStr(IsDateOk(32,12,1));
end;

end.
Gruß

Wolfgang
Öh, was macht dein "mydate:=EncodeDate(y,m,d);" an dieser Stelle? Wozu?
Henning
  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
 
#17

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 11:14
Meine OH gibt folgende Auskunft:

Zitat:
Mit TryStrToDate kann ein String mit einer Datumsangabe zerlegt werden. Enthält S kein gültiges Datum, gibt TryStrToDate false zurück.
d,m und y sind vom Typ Integer.

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 DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 12:21
Aber mydate ist vom Typ TDateTime
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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
 
#19

Re: Datum auf Fehler prüfen - Deutsches Datumsformat

  Alt 23. Sep 2009, 13:55
Hast wieder 'mal Recht

[OT] Opa Detlef muß immer das letzte Wort haben [/OT]

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 2 von 2     12   


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 05:52 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