Autor Beitrag
michaelarban
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Do 22.07.10 18:04 
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 :

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: 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

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!