Theoretisch darf es keine Rundungsfehler geben, aber bei Millisekunden ist man da anscheinend nicht so genau. TDateTime ist ja nur eine Zahl, was vor dem Komma ist, sind Tage, nach dem Komma die Stunden, Minuten, Sekunden und Millisekunden.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
h, n, s, ms: Integer;
t: TDateTime;
d: Double;
begin
t := EncodeTime(11, 20, 30, 998);
d := t * 24;
h := Trunc(d);
d := (d - h) * 60;
n := Trunc(d);
d := (d - n) * 60;
s := Trunc(d);
d := (d - s) * 1000;
ms := Trunc(d);
//ShowMessage('Zeit: ' + TimeToStr(t));
ShowMessage(Format('h: %d, n: %d, s: %d, ms: %d', [h, n, s, ms]));
end;
Bei der Millisekunde wird es ungenau im 1/1000 Sekunde.