Wenn Du mit Zeiten rechnen willst, würde ich von Dezimalzahlen Abstand nehmen! Diese sind zu ungenau.
Ich habe mal eine Zeiterfassungs-Anwendung geschrieben und dabei alles in Minuten umgerechnet und diese als Integer-Wert abgespeichert. Alternativ kann man das auch mit Sekunden so machen.
Dann brauchte ich noch vier Funktionen:
Delphi-Quellcode:
function MinToTime(min: Integer): TTime;
function TimeToMin(t: TTime): Integer;
function StrToMin(str: String): Integer;
function MinToStr(min: Integer): String;
Das reicht eigentlich schon aus.
Beispiel:
Delphi-Quellcode:
function MinToTime(min: Integer): TTime;
begin
result := EncodeTime(min div 60, min mod 60, 0);
end;
function TimeToMin(t: TTime): Integer;
var h, m, s, ms: Word;
begin
DecodeTime(t, h, m, s, ms);
result := h * 60 + m;
end;
function MinToStr(min: Integer): String;
begin
result := Format('%d:%2.2d', [min div 60, min mod 60]);
end;