Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Prüfen ob Datum existiert


Jakane - Do 09.06.11 10:05
Titel: Prüfen ob Datum existiert
Guten Morgen lieber Delphi-Helfer :)

ich möchte prüfen ob ein Datum existiert oder nicht.
mein grober Filter weiss zwar das es keinen 32.April geben kann, aber wenn ich den soweit ausbaue das er auch weiss das es keinen 31. April gibt, wird er relativ gross... wenn dann noch Schaltjahre mit rein sollen...

Kenn da jemand einen einfacheren Weg? :)


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am Fr 10.06.2011 um 00:30


MaxWurzel - Do 09.06.11 10:11

Guckt dir mal die Funktion

Delphi-Quelltext
1:
IsValidDate                    

in der Unit DateUtils an.


Jakane - Do 09.06.11 10:28

Datei nicht gefunden :( hab keine DateUtils.dcu


jaenicke - Do 09.06.11 10:39

Dann musst du eine sehr sehr alte Delphiversion haben. Da wäre es schon sinnvoll, wenn du das in dein Profil schreibst, damit man das bei Antworten gleich weiß... da ist so viel dazugekommen, was du dann alles nicht hast...
Welche Version hast du denn?

Bliebe noch der Versuch es in einen Datumswert umzuwandeln und wenn es nicht geht, ist es keins.


Jakane - Do 09.06.11 15:50

Ich habe Delphi 5 :(


jasocul - Do 09.06.11 16:15

Bin jetzt nicht ganz sicher, aber gab es früher nicht bei den Jedi-Komponenten eine entsprechende Unit?
Ich meine, dass die JvDateUtils hieß. Also Jedi installieren und weiterarbeiten :wink:


jaenicke - Do 09.06.11 16:41

Wobei die neuen JVCL/JCL Versionen nicht mehr mit Delphi 5 funktionieren, der Support wurde mit JVCL Version 3.37 eingestellt. Du müsstest dir also diese alte Version holen, damit es geht.


Jakane - Fr 10.06.11 09:40

An dem PC an dem ich arbeite darf ich nichts installieren :(

Wie prüf ich ich über StrToDate() ohne das ich eine Fehlermeldung bekomme?


jasocul - Fr 10.06.11 09:44

Ich habe mal bei Tante Suche bei Google G?LTIGES DATUM DELPHI eingegeben.
Da stößt man mal wieder ganz schnell auf die Schweizer [http://www.swissdelphicenter.ch/de/showcode.php?id=637].


Martok - Fr 10.06.11 11:57

Soweit waren wir schonmal ;)

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Bliebe noch der Versuch es in einen Datumswert umzuwandeln und wenn es nicht geht, ist es keins.


jasocul - Fr 10.06.11 12:56

Oh man, dann schreibt es doch selbst. Ist nun wirklich nicht kompliziert.
Pseucode:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Funktion IstGueltigesDatum(Datum) : Boolean;
Datum in Tag, Monat und Jahr aufteilen

falls 31er-Monat und Tag zwischen 1 und 31, dann Rückgabe = True
sonst
  falls 30er Monat und Tag zwischen 1 und 30, dann Rückgabe = True
  sonst
    falls Monat = 2 und Tag zwischen 1 und 28, dann Rückgabe = True
    sonst
      Falls Monat = 2 und Tag = 29 und Schaltjahr, dann Rückgabe = True
      sonst
        Rückgabe = False

Für das Schaltjahr natürlich noch eine kleine Funktion schreiben.

Kann man auch sehr hübsch als Case-Struktur programmieren.


SpaghettiCodix - Mi 06.07.11 13:09

user profile iconJakane hat folgendes geschrieben Zum zitierten Posting springen:
ich möchte prüfen ob ein Datum existiert oder nicht.

vielleicht hilft Dir das hier weiter:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function IstString_einDatum(const S: string): Boolean;
begin 
  Result := True; 
  try 
    StrToDate(S); 
  except 
    Result := False; 
  end
end;

Wenn hier der String kein datum ist,gibt die Function ein False zurück.

Delphi-Quelltext
1:
2:
3:
If IstString_einDatum('32.01.2011'then Label1.caption:='es ist ein Datum'
else
Label1.caption:='es ist KEIN Datum';


Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt, Zitat gekürzt.