Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi gültigkeit eines datums prüfen (https://www.delphipraxis.net/69216-gueltigkeit-eines-datums-pruefen.html)

sancho1980 11. Mai 2006 20:47


gültigkeit eines datums prüfen
 
hallo
sagt mal gibt es in der standardbibliothek von delphi 7 irgendeine funktion, der ich tag, monat und jahr übergeben kann und welche mir dann zurückgibt, ob es sich dabei um ein gültiges datum handelt (also schaltjahr und alles miteinbezogen)?
danke,
martin

Matze 11. Mai 2006 20:51

Re: gültigkeit eines datums prüfen
 
Moin :hi:

Teste einfach, ob Delphi-Referenz durchsuchenStrToDate möglich ist. '29.02.2006' ist ungültig, '29.02.2008' hingegen wird gültig sein.

Edit [22:10]: Wieso möchte ich immer alle Funktionen selbst schreiben, obwohl's die alle schon gibt. :wall:

Hawkeye219 11. Mai 2006 20:59

Re: gültigkeit eines datums prüfen
 
Wie wäre es mit Delphi-Referenz durchsuchenIsValidDate aus der Unit DateUtils?

Gruß Hawkeye

negaH 11. Mai 2006 23:57

Re: gültigkeit eines datums prüfen
 
oder EncodeDate(Jahr, Monat, Tag) innerhalb eines try except Blocks. Denn EncodeDate() kann ein ungültiges Datum nicht codieren, das ist mathematisch unmöglich.

Gruß Hagen

TStringlist 12. Mai 2006 00:10

Re: gültigkeit eines datums prüfen
 
...event. dann auch gleich die TryEncodeDate-Funktion.

Hawkeye219 12. Mai 2006 10:51

Re: gültigkeit eines datums prüfen
 
Warum eine unnötige Dummy-Variable mitschleppen oder gar eine Exception riskieren, die beim Arbeiten innerhalb der IDE nur stört. Die Funktion IsValidDate macht genau das, was Martin möchte: sie prüft die Gültigkeit eines übergebenen Datums ohne großen Overhead.

Gruß Hawkeye

MPirnstill 12. Mai 2006 11:03

Re: gültigkeit eines datums prüfen
 
Zitat:

Zitat von Hawkeye219
Warum eine unnötige Dummy-Variable mitschleppen oder gar eine Exception riskieren, die beim Arbeiten innerhalb der IDE nur stört. Die Funktion IsValidDate macht genau das, was Martin möchte: sie prüft die Gültigkeit eines übergebenen Datums ohne großen Overhead.

Gruß Hawkeye

Ab welcher Delphi-Version gibt es den DateUtils?

Klaus01 12. Mai 2006 11:08

Re: gültigkeit eines datums prüfen
 
in Delphi 6 ist sie schon drin.

Grüße
Klaus

TStringlist 12. Mai 2006 11:48

Re: gültigkeit eines datums prüfen
 
Zitat:

Zitat von Hawkeye219
Warum eine unnötige Dummy-Variable mitschleppen... Die Funktion IsValidDate macht genau das, was Martin möchte...

Wahrscheinlich *g*. Aber meistens sind die Ausgangssituationen doch gar nicht so explizit eng, wie sie vorher in einer Thread-Frage auch nur formuliert wurden. Durchaus wahrscheinlich auch, dass in der vorliegenden Situation eine (erfolgreiche) Eingabe dann auch gleich weiterverarbeitet werden soll...

Minimal größer gefasste Antworten können also u.U. durchaus auch mal ganz nützlich sein oder zumindest dem Frager noch zusätzlichen Überblick bringen.

sancho1980 12. Mai 2006 17:54

Re: gültigkeit eines datums prüfen
 
so viele wege die nach rom führen ;)
aber isvaliddate is wohl das beste für meinen fall
dank euch
martin

negaH 12. Mai 2006 21:40

Re: gültigkeit eines datums prüfen
 
Nochmal konkret auf die Frage des Engangspostings bezogen:

"wie kann ich die Gültigkeit eines Datums überprüfen wenn ich den Tag, Monat und Jahr als separate Werte besitze ?"

Er hat also schon Tag,Monat,Jahr vorliegen und IsValidDate() benötigt meiner Kenntniss nach einen TDateTime. Einen TDateTime bekommt man aus einem Tag,Monat,Jahr nur mit EncodeDate() oder besser noch TryEncodeDate().

TryEncodeDate() ist also die richtige Lösung meiner Meinung nach, wenn man eben Delphi 6 oder höher hat. Ich meine das bis Delphi 5 diese Funktion nicht existiert. Dann sollte man EncodeDate() mit einem try except schutzblock benutzen.

Gruß Hagen

pszopp 12. Mai 2006 21:45

Re: gültigkeit eines datums prüfen
 
Stimmt ja Hagen, aber

Zitat:

Zitat von sancho1980
isvaliddate is wohl das beste für meinen fall

das sagt doch eigentlich alles...

Gruß,
pszopp

negaH 12. Mai 2006 22:06

Re: gültigkeit eines datums prüfen
 
Ok habs gerade für D7 überprüft

Delphi-Quellcode:
function IsValidDate(const AYear, AMonth, ADay: Word): Boolean;
benutzt also Tag,Monat und Jahr, das wusste ich nicht.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 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