Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit strtodatetime (https://www.delphipraxis.net/103391-problem-mit-strtodatetime.html)

bart57 15. Nov 2007 08:34


Problem mit strtodatetime
 
Hallo,

ich möchte folgenden String "14.11.07 05:51" in Datetime konvertiert (mit strtodatetime),
leider funktionniert es nicht.
Ich bekommme immer die Exception EConvertError...
Kann mie jemand helfen ?

Danke im Voraus.

Thanatos81 15. Nov 2007 08:36

Re: Problem mit strtodatetime
 
StrToDateTime nutzt das Datums-/Zeitformat aus den Regionaleinstellungen von Windows. Wie sehen die denn bei dir aus?

bart57 15. Nov 2007 08:42

Re: Problem mit strtodatetime
 
Hallo und danke,

die sehen so aus: TT.MM.JJJJ und HH:mm:ss .

Ich mache im Deplhi viele TEXT-Dateien-Bearbeitung (laden in DB,usw...)

Ich hätte gern eine möglichkeit dass es immmer funktionniert egal ob den String mit dem Datum
so '14.11.2007 10:20:23' oder so '14.11.07 10:20' ist.


Ich kann ja nicht jedes mal die Datums-/Zeitformat aus den Regionaleinstellungen von Windows ändern :-(
Gibt es vielleicht eine andere Funktion wie strtodatetime ?

mkinzler 15. Nov 2007 08:47

Re: Problem mit strtodatetime
 
Es gibt auch eine überladene Version der Funktion, der du das Format als weiteren Parameter übergeben kannst.

Thanatos81 15. Nov 2007 08:49

Re: Problem mit strtodatetime
 
Wie mkinzler schon sagte gibt es eine überladene Version, siehe Delphi-Hilfe. Dieser kannst du TFormatSettings übergeben.

Du könntest also eine Variable vom Typ von TFormatSettings mit "TT.MM.JJJJ hh:nn:ss" anlegen und eine mit "TT.MM.JJ hh:nn:ss". Dann prüfst du mit der überladenen Version und der ersten Variablen ob du das umwandeln kannst, schlägt das fehl versuchst du es mit der Überladung und der zweiten Variablen.

marabu 15. Nov 2007 08:49

Re: Problem mit strtodatetime
 
Hallo,

wo soll da das Problem sein?

Delphi-Quellcode:
ShowMessage(DateTimeToStr(StrToDateTime('15.11.07 12:00')));
Funktioniert bei mir einwandfrei mit dem genannten Format.

Grüße vom marabu

bart57 15. Nov 2007 08:55

Re: Problem mit strtodatetime
 
Ja die kenne ich, ich habe es getestet, geht auch nicht:

FormatSettings: TFormatSettings;


GetLocaleFormatSettings(LOCALE_USER_DEFAULT,Format Settings);

FormatSettings.TwoDigitYearCenturyWindow:=1;
FormatSettings.DateSeparator:='.';
FormatSettings.TimeSeparator:=':';
FormatSettings.ShortDateFormat:= 'hh:nn';
FormatSettings.LongDateFormat:= 'hh:nn:ss';
FormatSettings.ShortDateFormat:= 'dd.mm.yy';
FormatSettings.LongDateFormat:= 'dd.mm.yyyy';


strtodatetime(sdate, FormatSettings)

bart57 15. Nov 2007 08:56

Re: Problem mit strtodatetime
 
Sorry, wollte sagen:

FormatSettings.TwoDigitYearCenturyWindow:=1;
FormatSettings.DateSeparator:='.';
FormatSettings.TimeSeparator:=':';
FormatSettings.ShortTimeFormat:= 'hh:nn';
FormatSettings.LongTimeFormat:= 'hh:nn:ss';
FormatSettings.ShortDateFormat:= 'dd.mm.yy';
FormatSettings.LongDateFormat:= 'dd.mm.yyyy';

bart57 15. Nov 2007 15:02

Re: Problem mit strtodatetime
 
es funktionniert ! Danke an alle


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr.

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