AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTime/String frage beim zugriff

Ein Thema von Haegar · begonnen am 23. Apr 2003 · letzter Beitrag vom 24. Apr 2003
Antwort Antwort
Seite 2 von 2     12   
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#11
  Alt 24. Apr 2003, 10: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??

gruss haegar
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#12
  Alt 24. Apr 2003, 11: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
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#13
  Alt 24. Apr 2003, 11:54
danke erstmal, werds mir bei gelegenheit anschauen.

gruss haegar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.
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