Prüfen ob String ein gültiges Datum ist?



  • Hallo. Ich werkle mit BCB5 noch rum und hänge gerade an TDateTime etwas fest.
    Ich möchte einen String an ein TDateTime übergeben, nur kann dieser String auch mal allem 0 sein und dann kommt es natürlich mit StrToDateTime zu einem Fehler.

    Beispiel für ein ungültiges Datum. Normal steht da eine Variable, anstatt des jetzt festen falschen Wertes.

    TDateTimePicker->Date = StrToDate("0000-00-00"); // Fehler
    

    Was wäre denn hier die sinnvollste vorgehensweise? Einfach dies in eine try/catch legen?

    try
    {
    TDateTimePicker->Date = StrToDate("0000-00-00");
    }
    catch(...)
    {
    }
    

    oder sollte man vorher prüfen ob das Datum und gegebenenfalls Zeit korrekt ist?
    Soweit ich feststellen konnte fehlt aber C++Builder leider eine entsprechende Prüffunktion. IsDate, ScanDateTime oder TryEncodeDate etc gibt es in Version BCB5 wohl noch nicht. Hatte jemand hier schon das Problem? 😉



  • Hallo,

    hab zwar nicht den BCB5, aber ich denke mal, das ist allgemeingültig:

    kann es sein, dass du die Komponente mit ihrer Klassenbezeichnung ansprichst, nicht mit ihrem Namen?
    Finde mal heraus, ob der DateSeparator bei dir wirklich der Bindestrich ist.

    edit: ein Datum 00.00.0000 wirds auch nicht geben, dann 01.01.0000



  • Hallo

    Wenn StrToDate einen String nicht umwandeln kann, sollte es eine Exception werfen. Diese kannst du abfangen und eine entsprechende Fehlerbehandeln. Damit kannst du dir eine StrToDateDef (in Anlehnung an StrToIntDef) selber schreiben.

    bis bald
    akari


Anmelden zum Antworten