Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#12
  Alt 24. Apr 2003, 10:42
Hi,

also, fangen wir einfach mal von vorne an.

Du benötigst einen Wert Dauer den du zwischenspeicherst.

Natürlich kannst du dort mit Now arbeiten. Die Methode GetTickCount ist hier asber auch eine Möglichkeit und für Dich vielleicht besser.

Um einen Zeitabschnitt zu ermitteln verwende ich diese Methode wie folgt:

Delphi-Quellcode:
// globale Variable (u.U. auch als Objektvariable FLaufzeit)
var Laufzeit : DWord;

// im Programm für Start
Laufzeit := GetTickCount;

// im Programm bei Zeit abgelaufen
Laufzeit := GetTickTime - Laufzeit;
// Speichern als DWord oder wandeln in String
Jetzt hast du die Möglichkeit Laufzeit als millisekunden zu deinen Werten hinzuzuadieren.

Wenn Du dir den Typ TDateTime anschaust, dann stellst du fest, dass er als Double definiert ist, wobei der ganzzahlige Anteil die Tageswerte darstellt.

Durch einfache Berechnung kannst du nun aus Laufzeit einen TDateTime equivalenten Doublewert bilden, den du dann zu einem TDateTime wert hinzuadierst.

Oder du bleibst gleich außerhalb von TDateTime und gibst die werte in hh:mm:ss über eine eigene Berechnung an. Hierzu würde ich mir eine kleine Hilfsfunktion schreiben.

Delphi-Quellcode:
Function GetSZeit(Value : DWord) : String;
var Ts, hs, ss : String;
    Rest, Td, hd, sd : Dword;
begin
  Result := '00:00:00';
  If Value = 0 then Exit;
  // Stunden (entspricht 3600000 ms)
  Rest := Value / 3600000;
  Td := Trunc(Rest);
  Value := Value - Trunc(Rest);
  // Minuten (entspricht 60000 ms)
  Rest := Value / 60000;
  hd := Trunc(Rest);
  Value := Value - Trunc(Rest);
  // Sekunden (entspricht 1000 ms)
  Rest := Value / 1000;
  sd := Trunc(Rest);

  // String bilden
  Result := InttoStr(Td) + ':' + InttoStr(hd) + ':' + InttoStr(sd);
end;
So, das müßte es gewesen sein. Wie du in dieser Funktion den String formatierst bleibt natürluch dir überlassen.

Gruß oki
  Mit Zitat antworten Zitat