Einzelnen Beitrag anzeigen

Schmufu

Registriert seit: 24. Sep 2003
Ort: Bremen
4 Beiträge
 
Delphi 7 Enterprise
 
#1

Trunc und TTime (Wenn TTime = 1 gibt Trunc 0 zurück, warum?)

  Alt 29. Nov 2004, 21:25
Hallo,

ich habe folgende Funktion geschrieben, um aus einem TTime (TDateTime) die Stunden und Minuten zu bekommen, und zwar auch dann die stunden wenn es sich um mehr als 24 stunden handelt.

Es Funktioniert auch wunderbar, allerdings gibt die Funktion 0:00 zurück wenn "Zeit" 1 ist, also exakt 24 Stunden.

Wenn ich mir das ganze beim Debuggen anschaue hat "Zeit" den wert 1, allerdings hat "Tage" nach dem Trunc den Wert 0!

Ändere ich den Quelltext auf "Tage := Trunc(1)" (also immer 1 an Trunc) ist Tage auch immer 1.

Irgendwie verstehe ich das nicht. Kann mir da vielleicht jemand auf die Sprünge helfen?

Code:
function TimeToStrInHoursMinutes(Zeit: TTime): String;
var Tage: Integer;
    Stunden, Minuten: String;
begin
  if Zeit >= 0 then
  begin
    Tage := Trunc(Zeit); // Ganzahl des TTime in Tage?!?
    Stunden := IntToStr(24*Tage + StrToInt(FormatDateTime('hh', Zeit - Tage)));
    Minuten := FormatDateTime('nn', Zeit - Tage);
    Result := Stunden+':'+Minuten;
  end
  else
  begin
    Tage := Trunc(Zeit) * (-1);
    Stunden := IntToStr(24*Tage + StrToInt(FormatDateTime('hh', Zeit + Tage)));
    Minuten := FormatDateTime('nn', Zeit + Tage);
    Result := '-'+Stunden+':'+Minuten;
  end;
end;
PS: Die Funktion hätte man vielleicht auch anders schreiben können, verbesserungsvorschläge werden dankbar angenommen
  Mit Zitat antworten Zitat