Hallo Matz,
die Format-Strings der
Unit SysUtils sind eher auf die Ausgabe gerichtet. Beim Parsen von Strings bist du abseits des unterstützten Normalfalls (nur Zahlen und Trennzeichen) auf deine eigene Findigkeit angewiesen.
Nicht elegant, aber funktioniert mit deinem Beispiel:
Delphi-Quellcode:
function StrToDateTimeEx(s: string): TDateTime;
var
i: integer;
fs: TFormatSettings;
sl: TStringList;
begin
sl := TStringList.Create;
sl.Delimiter := ' ';
sl.DelimitedText := s;
if sl.Count = 4 then begin
for i := 1 to 12 do
if ShortMonthNames[i] = sl[1] then begin
sl[1] := RightStr('0' + IntToStr(i), 2);
Break;
end;
s := Format('%s.%s.%s %s', [sl[0], sl[1], sl[2], sl[3]]);
sl.Free;
end;
GetLocaleFormatSettings(GetUserDefaultLCID, fs);
with fs do begin
fs.DateSeparator := '.';
fs.ShortDateFormat := 'dd.mm.yyyy';
end;
Result := StrToDateTime(s, fs);
end;
Grüße vom marabu