Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datum auf Syntax überprüfen (https://www.delphipraxis.net/58541-datum-auf-syntax-ueberpruefen.html)

faux 8. Dez 2005 17:01


Datum auf Syntax überprüfen
 
Hallo!

Ich will überprüfen, ob in einem Edit ein korrektes Datum eingegeben wurde. Mein Edit akzeptiert genau 6 Ziffern. Diese sollen dann im Format yymmdd in ein Datum umgerechnet werden. Zur Zeit habe ich das so gelöst:

Delphi-Quellcode:
try
  wrong_limit := false;
  old := (Length(Edit8.Text) = Edit8.MaxLength)
    and (Now > StrToDate(Copy(Edit8.Text, 5, 2)+'.'+Copy(Edit8.Text, 3, 2)+'.'+Copy(Edit8.Text, 1, 2)));
except
  on EConvertError do
  begin
    old := true;
    wrong_limit := true;
  end;
end;
Wie löst man das denn wirklich? Ich bezweifle dass die try-except-end - Methode hier gut geignet ist.
Mal davon abgesehen, dass ich beim Debuggen nach jedem Tastenschlag einen Fehler bekomme...

Grüße
Faux

Jelly 8. Dez 2005 17:14

Re: Datum auf Syntax überprüfen
 
Die Funktion StrToDate wandelt eine String in ein Datum um. Dabei muss der String dem ShortDateFormat entsprechen. Alos könntest Du Folgendes probieren, was allerdings auch wieder über try..except läuft:

Delphi-Quellcode:
function IsDateValid (Datum : string ; var D : TDate) : boolean ;
var
 OldShortDateFormat : string ;
begin
     OldShortDateFormat := ShortDateFormat ;
     ShortDateFormat := 'yymmdd' ;

     try
        D := StrToDate (Datum) ;
        Result := true ;
     except
        Result := false ;
     end ;

     ShortDateFormat := OldShortDateFormat ;
end ;
ungetestet...

shmia 8. Dez 2005 17:24

Re: Datum auf Syntax überprüfen
 
Zitat:

Zitat von faux
Ich will überprüfen, ob in einem Edit ein korrektes Datum eingegeben wurde. Mein Edit akzeptiert genau 6 Ziffern. Diese sollen dann im Format yymmdd in ein Datum umgerechnet werden.

Warum nimmst du keinne TDateTimePicker ???

faux 8. Dez 2005 17:29

Re: Datum auf Syntax überprüfen
 
Zitat:

Zitat von Jelly
Die Funktion StrToDate wandelt eine String in ein Datum um. Dabei muss der String dem ShortDateFormat entsprechen.

Es funktioniert so wie ich es habe. StrToDate arbeittet genau so mit dem kurzem Datum.

[quote="shmia"]
Zitat:

Zitat von faux
Warum nimmst du keinne TDateTimePicker ???

Weil das ganze in einen Code eingebettet wird. Da gibts nur Edit's. Außerdem muss das Eingabeformat yymmdd sein.

Ich brauche im Prinzip nur eine Funktion á la CheckDate oder isDate oder so.

Grüße
Faux

Jelly 8. Dez 2005 18:35

Re: Datum auf Syntax überprüfen
 
Diese Funktion hab ich dir ja oben geschrieben. Sie liefert True wenn das Format OK, sonst False... Wo ist denn dein Problem?

faux 8. Dez 2005 20:37

Re: Datum auf Syntax überprüfen
 
Zitat:

Zitat von Jelly
Wo ist denn dein Problem?

Dass ich das wieder per try-except machen muss, und ich somit wieder nicht debugen kann.
Am Anfang sind die Edit's leer, und somit tritt gleich als Begrüßung eine exception auf.

Grüße
Faux

tomsel 8. Dez 2005 20:48

Re: Datum auf Syntax überprüfen
 
Die Exception abzufangen ist schon der richtige Weg, das solltest Du schon so machen.
Noch ein Tipp: setze einen Haltepunkt auf die Zeile mit dem strtodate, gehe in die Haltepunkteigenschaften, klicke auf "erweitert", schalte "Anhalten" aus und "weitere Exceptions ignorieren" an. Dann ist der Nerv-Faktor gleich um einiges geringer ;-)

Jelly 9. Dez 2005 00:44

Re: Datum auf Syntax überprüfen
 
Oder gleich im Menü Tools/Debugger Optionen/Sprach Exceptions/Bei Delphi exception stoppen abchecken.

faux 9. Dez 2005 07:43

Re: Datum auf Syntax überprüfen
 
Zitat:

Zitat von Jelly
Oder gleich im Menü Tools/Debugger Optionen/Sprach Exceptions/Bei Delphi exception stoppen abchecken.

Dann hält er aber bei keiner Exception mehr, und das ist ja imho der Sinn des Debuggers.

Danke für die Antworten.

Grüße
Faux

marabu 9. Dez 2005 08:19

Re: Datum auf Syntax überprüfen
 
Hallo Faux,

ich halte folgende Vorgehensweise für angebracht: Bei Delphi-Exceptions stoppen sollte eingeschaltet sein. In der Liste der zu ignorierenden Exceptions EConvertError hinzufügen und markieren.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz