Entwickler-Ecke

Sonstiges (Delphi) - Anzeige über 24 Stunden


schaumermal - Do 18.11.10 17:41
Titel: Anzeige über 24 Stunden
Hallo,

kann mir jemand sagen, wie ich Delphi Zeiten über 24 Stunden darstellen kann?

Ich ermittle und summiere die Arbeitszeiten pro Tag.
Wie kann ich es anstellen, dass ich als Ergenis z.B. 38:15 Stunden bekomme.
Nach meiner Addition erhalte ich z.B. hier nur 14:15.

Gruß


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var  Tmp:Double;
begin
    QSuchen.SQL.Text:='Select * from PersonalAnwesenheitszeiten';
    QSuchen.SQL.Add('Where PersonalID='+IntToStr(Personal));
    QSuchen.Active:=true;

    // Zeiten ermitteln
    Tmp:=QSuchen.FieldByName('MontagBis').AsDateTime-QSuchen.FieldByName('MontagVon').AsDateTime;
    Tmp:=Tmp+QSuchen.FieldByName('DienstagBis').AsDateTime-QSuchen.FieldByName('DienstagVon').AsDateTime;
    Tmp:=Tmp+QSuchen.FieldByName('MittwochBis').AsDateTime-QSuchen.FieldByName('MittwochVon').AsDateTime;
    Tmp:=Tmp+QSuchen.FieldByName('DonnerstagBis').AsDateTime-QSuchen.FieldByName('DonnerstagVon').AsDateTime;
    Tmp:=Tmp+QSuchen.FieldByName('FreitagBis').AsDateTime-QSuchen.FieldByName('FreitagVon').AsDateTime;
    Tmp:=Tmp+QSuchen.FieldByName('SamstagBis').AsDateTime-QSuchen.FieldByName('SamstagVon').AsDateTime;
    Result:=DateTimeToStr(tmp);


Moderiert von user profile iconMartok: Delphi-Tags gesetzt


jaenicke - Do 18.11.10 17:56


Delphi-Quelltext
1:
Result := TimeToStr(Frac(tmp));                    
Frac extrahiert den Nachkommaanteil. Und da ein Tag genau Eins entspricht, passt das für die Uhrzeit. Dann noch die Tage mit 24 multiplizieren und addieren.


schaumermal - Do 18.11.10 17:59

Hi,

das ist schon klar.
Aber wie kann ich dies dann als 38:15 anzeigen lassen?


bummi - Do 18.11.10 18:08


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  d,h,mm,s,z:Word;
  Zeit:Double;
begin
   Zeit := 1.7;
   d := Trunc(zeit);
   DecodeTime(Zeit,h,mm,s,z);
   Showmessage(Format('%d:%d',[d*24+h,mm]))
end;


schaumermal - Do 18.11.10 18:10

Danke!