Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTime/String frage beim zugriff (https://www.delphipraxis.net/4293-tdatetime-string-frage-beim-zugriff.html)

Haegar 24. Apr 2003 09:27

da der ergibt sich aus der tollen berechnung von dauer! (siehe oben....MyHoursBetween in timer-proz.) und da beides strings sind übergeb ich die einfach so. bisher:=dauer;
oder hab ich schon wieder was falsch vertanden?? :nerd:

gruss haegar

oki 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

Haegar 24. Apr 2003 10:54

danke erstmal, werds mir bei gelegenheit anschauen.

gruss haegar


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz