PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Delphi5: Subtraktion zweier String/Time Werte


mobius
2004-06-17, 20:25:17
Hi Leute,

hab ein Prob mit Delphi5 und zwar muss ich ein Programm zum Zeitmessen programmieren. Ich nehme also beim drücken eines Buttons die Startzeit mit Hilfe des Time-Befehls. Mit einem anderen Button nehm ich dann die Endzeit. Nun müsste die zwei Zeiten der Form "20:22:43" von einander subtrahieren um rauszubekommen, wie lang jemand unterwegs war. Doch wie zum Teufel mach ich das? Ich kann zwar die Zeiten zu Strings machen und ausgeben, aber ich müsste damit rechnen. Das geht aber nicht , denn die Form "20:22:43" verhindert dies ja, da Integer nur Zahlen akzeptiert.
HILFE. Und vorallem dringend :(

Gast
2004-06-17, 20:56:02
Also Möglichkeiten gibt es mehrere. Ich kenne mich jetzt in Pascal nicht aus, aber für dich das Einfachste wird wohl sein, alles zu normalisieren:

Stunden*60*60=Sekunden
Minuten*60=Sekunden
Sekunden=Sekunden

Also (20*60*60)+(22*60)+43 -> Sekunden der Startzeit.

Das Gleiche mit der Endzeit und beide voneinander abziehen = Dauer in Sekunden.
Wenn du das jetzt wieder in der Form 00:00:00 brauchst, musst du es halt zurückrechnen. Aber vielleicht gibt es in Delphi ja einen Formatbefehl.

Darkstar
2004-06-17, 22:00:37
Ich würde an Deiner Stelle statt Time lieber Now verwenden (vor allem dann, wenn man das Programm auch kurz vor Mitternacht starten darf) und dann den Start- vom Endwert abziehen (durch einfache Subtraktion der TDateTime-Werte). Anschließend kannst Du das Ergebnis mit den „Date/Time Routinen“ (siehe Hilfe) wie gewünscht formatieren.

Crushinator
2004-06-18, 11:15:46
// Zeit messen leicht gemacht
procedure MachWas()
Var
strDuaration: String;
dtStartTime, dtDuaration: TDateTime;

begin

dtStartTime := Now;

(* Operationen ausführen
...
*)

dtDuaration := Now - dtStartTime;

strDuaration := FormatDateTime('hh:nn:ss:zzz', dtDuaration);

end;

mobius
2004-06-20, 11:02:40
Ui vielen Dank. Die Vorschläge sind wirklich alle gut. Weil mir nix einfiel, musste ich 2 Seiten DebugCode schreiben, damit es läuft, aber wie man sieht kann man es auch richtig machen :D