Warum ist im DateFormat ein Time-String drin?
Sei froh, dass Delphi beim Encodieren von Datums-/Zeitwerten so schrottig arbeitet, sonst hätte es dir diesen "kaputten"
Datums-String um die Ohren geworfen.
Zitat:
If ( ((ord(InStr[i]) >= 48) and (ord(InStr[i]) <= 57 )) ) then
Wozu diese komische Obfuskation?
Delphi-Quellcode:
If (InStr[i] >= '0') and (InStr[i] <= '9') then
If CharInSet(InStr[i], ['0'..'9']) then //If InStr[i] in ['0'..'9'] then
Sinnlose Kommentare, ala
// Zahlenbereiche auf Ziffern prüfen
, könnte man sich dann auch sparen.
Zitat:
copy( FormatDateTime('dd.mm.yyyy hh:nn:ss', now) ,1,11 )
Ähhhhhhhhh?
FormatDateTime('dd.mm.yyyy ', now)
Zitat:
Delphi-Quellcode:
except
... mach hier irgendwelchen sinnlosen Scheiß, der die eigentliche Fehlermeldung zerstört ...
end;
oder
Für sowas sollten Leute gesteinigt werden.
Kurz gefasst macht deine Funktion ausschließlich das:
Delphi-Quellcode:
function TimeStrToDateTime(InStr: String): TDateTime;
var
i: Integer;
fs: TFormatSettings;
begin
for i := Length(InStr) downto 1 do
if not CharInSet(InStr[i], ['0'..'9']) then
InStr[i] := ':';
fs.TimeSeparator := ':';
//fs.ShortTimeFormat := 'hh:nn:ss'; // das ist sowieso egal, da die Delphi-Date/Time-Decodierungsfunktionen die Formatstrings fahrlässig ignorieren
// und nur die richtigen Separatoren, sowie TimeAMString und TimePMString beachten
//try
Result := DateOf(Now) + StrToTime(Instr, fs);
//except
// Result := 666.000001; // ein unverständlicher krumer Wert ... warum nicht einfach 0?
//end;
end;
DateOf(Now)
=
Date, aber jeder nutzt lieber Now.
Und in Wirklichkeit wolltest du wohl nur sowas machen?
Delphi-Quellcode:
function TimeStrToDateTime(InStr: String): TDateTime;
var
fs: TFormatSettings;
begin
fs.TimeSeparator := ':';
InStr := ReplaceString(InStr, ' ', ''); // inkl. Trim
InStr := ReplaceString(InStr, '/', ':'); // ein anderer bekannter TimeSeparator
InStr := ReplaceString(InStr, '-', ':'); // ...
Result := DateOf(Now) + StrToTime(Instr, fs);
end;
Wer "Dreck" eingibt, also z.B. irgendwelche falsche Zeichen/Buchstaben, der hat gefälligst mit der passenden Fehlermeldung zu rechnen, wo ihm gesagt wird, dass er Mist gebaut hat.