Hallo allerseit,
ich muss mal vorausschicken, dass ich zwar schon lange hier und da was mit Delphi programmiere aber nicht annähernd ein Profi bin. Ich hab ein Tool programmiert um Dienstpläne zu bearbeiten.
Dabei gibt es in einem StringGrid/Edit-Feld Stringeingaben von Uhrzeiten:
Z.B.
Start: 06:00
Ende: 12:00
Und eine Berechnung:
Ende - Start = Dauer 6,0
Das funktioniert auch.
Dazu habe ich eine Formel die Lautet:
Wenn Dauer > 6 dann ziehe 0,5 ab (Arbeitszeitgesetzt, Arbeit über 6 Stunden eine halbe Stunde abziehen), auch das funktioniert.
Jetzt bin ich gestern auf ein seltsames phänomen gestoßen:
Wenn ich eingebe
Start: 06:00
Ende: 12:00
Bekomme ich als Ergebnis der Daur 6,0.....also okay
Wenn ich eingebe
Start: 05:00
Ende: 11:00
Bekomme ich als Ergebnis der Daur 6,0.....also auch okay
Wenn ich aber eingebe
Start: 04:00
Ende: 10:00
Bekomme ich als Ergebnis der Daur 5,5.....????!!
Ich verstehe nicht warum! Ich gebe ja als String ein: 04:00 und 10:00, keine Minute mehr oder weniger.
Trotzdem sagt die Formel
wenn Dauer > 6 dann 0,5 abziehen
dass dauer größer 6 ist.
Kann mir jemand sagen was ich falsch mache oder wie ich das verhindern kann?
Ich könnte einfach eingeben
Wenn dauer > 6,000xxx für 06:00:59 (Sekunden) aber die richtige Lösung ist das wohl nicht.
Ich hoffe Ihr könnt mir helfen.
Hier ein wenig code (bitte nicht lachen)
Delphi-Quellcode:
t1 := StrToTime(StringGrid3.Cells[3, i]);
t2 := StrToTime(StringGrid3.Cells[4, i]);
d := (t2-t1)*1440/60;
If RadioGroup6.ItemIndex <> 4 then
begin
if (d > 6.001) then
d := d - 0.5;
end;
StringGrid3.Cells[2, i] := FloatToStr(d);