Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - '01.04.2000' <> '1.4.2000'


michaelarban - Do 22.07.10 18:04
Titel: '01.04.2000' <> '1.4.2000'
Hallo,

ich bekomme einen Datuns-String der Form "dd.mm.yyyy" (z.b. 22.12.2009) und soll prüfen, ob es ein gültiges Datum ist:

ich verwende folgende Funktion :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function istDatum(Datum : String): Boolean;
var
  FormatSettings: TFormatSettings;
  Date  : TDateTime;
begin
  FormatSettings.ShortDateFormat := 'dd.mm.yyyy';
  FormatSettings.DateSeparator := '.';
  
  try
    Date  := StrToDate(Datum, FormatSettings);
  except 
  ...
...



aber diese Funktion abzeptiert auch Datums-String der Form '1.12.2000' bzw. 2.5.2000 (also 1-Stellige Tage und Monate die keine Null davor haben) ;

ich will aber dass er nur 2 Ziffrige Tage und monate akzzeptiert, also

'01.04.2000' , aber nicht '1.4.2000'

gibt es eine entsprechende Funktion?

danke

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


jaenicke - Do 22.07.10 19:15

Wenn das Format vorgegeben ist, dann kannst du das doch leicht selbst prüfen. :gruebel:

Alternative, wenn du das nicht möchtest: Vergleiche nach dem erfolgreichen Umwandeln, ob der mit FormatDateTime explizit in die "richtige" Form gebrachte String wiederum den ursprünglichen ergibt.


Reinhard Kern - Do 22.07.10 20:06

user profile iconmichaelarban hat folgendes geschrieben Zum zitierten Posting springen:
ich will aber dass er nur 2 Ziffrige Tage und monate akzzeptiert, also
'01.04.2000' , aber nicht '1.4.2000'
gibt es eine entsprechende Funktion?


Hallo,

etwas primitiv: prüfe vorab, ob der String 10 Zeichen lang ist.

Gruss Reinhard


ASMFreak - Fr 23.07.10 09:27

... oder ob an Position 3 und/oder 6 ein '.' steht, wenn auch die Jahrszahl zweistellig ein kann.

Gruß, Trutz