AGB  ·  Datenschutz  ·  Impressum  







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

Zeiten addieren

Ein Thema von Delphi Freak · begonnen am 4. Jan 2010 · letzter Beitrag vom 5. Jan 2010
Antwort Antwort
Delphi Freak

Registriert seit: 3. Jan 2010
13 Beiträge
 
Delphi 7 Personal
 
#1

Zeiten addieren

  Alt 4. Jan 2010, 00:03
Hallo zusammen,

da ich noch neu bin und auch noch nicht lange mit Delphi Programmiere, muss ich hier mal eine ganz einfache Frage stellen.

Ich will ein Programm schreiben in das man 2 Zeiten eingibt, welche dann addiert werden sollen.
Ich stell mir das so vor, dass ich 2 Editfelder mache, in jedes gibt man eine Zahl ein, dann drückt man auf den Button berechnen, er addiert sie mir und zeigt sie mir in einem Fenster(durch ShowMessage) an.
Jetzt zu meiner Frage: Ich kann ja nicht einfach die beiden Zeiten auslesen und addieren, dann rechner er ja quasi mit 100 Minuten, wie kann ich dem sagen, dass er mit h:m:s:ms rechnen soll?

Danke schonmal für eure Antworten.

Gruß
Florian
"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

Re: Zeiten addieren

  Alt 4. Jan 2010, 00:23
Probiere es so:

Benutzte 3 4 Editfelder pro Zeit (Stunde, Minute, Sekunde).
//EDIT: Millisekunden vergessen, aber das Prinzip sollte ja jetzt klar sein (Tipp: du musst dort 1000 statt 60 benutzen).

Addiere die Sekunden:
sec_c := sec_a + sec_b; Nun weist du min_c das Ergebnis der Division der Sekunden durch 60 (hier "Übertrag") zu und den Sekunden selbst den Rest):
Delphi-Quellcode:
min_c := sec_c div 60; // Minutenübertag merken
sec_c := sec_c mod 60; // "Begrenze" die Sekundenzahl auf 0 bis 59
Das gleiche machst du mit den Minuten, nur das du den "Übertrag" mit berücksichtigst (s.o.).
Delphi-Quellcode:
min_c := min_a + min_b + min_c;
h_c := min_c div 60; // Stundenübertag merken
min_c := min_c mod 60; // "Begrenze" die Minutenzahl auf 0 bis 59
Bei den Stunden kannst du dir es jetzt einfach machen.
h_c := h_a + h_b + h_c;
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Zeiten addieren

  Alt 4. Jan 2010, 00:29
ja, oder
- er benutzt nur 2 Eingabefelder
- Eingabe erfolgt im Format hh:nn:ss.zzz
- Delphi-Referenz durchsuchenStrToTime bzw. Delphi-Referenz durchsuchenStrToTimeDef
- Delphi-Referenz durchsuchenDecodeTime
DecodeTime( StrToTime( Edit1.Text ) + StrToTime( Edit2.Text ), h, n, s, m );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi Freak

Registriert seit: 3. Jan 2010
13 Beiträge
 
Delphi 7 Personal
 
#4

Re: Zeiten addieren

  Alt 4. Jan 2010, 13:09
@BUG: Vielen Dank, für die ausführliche Erklärung.

@Sir Rufo: Auch dir danke ich. Nur habe ich dieses Prinzip leider noch nicht verstanden, ich würde mich über eine genauere Erklärung freuen. Wie in meinem Erstbeitrag geschrieben, bin ich noch ein wirklicher Neuling bei Delphi und Programmieren allgemein.

Gruß
Florian
"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
Albert Einstein
  Mit Zitat antworten Zitat
JannesDKS

Registriert seit: 2. Feb 2009
Ort: Hamburg
61 Beiträge
 
#5

Re: Zeiten addieren

  Alt 4. Jan 2010, 14:06
hi,

Datumse und Uhrzeiten sind doch nichts anderes als numerische Werte. Der Sinn einer Addition von zwei verschiedenen Uhrzeiten erschließt sich mir ehrlich gesagt nicht, aber du kannst sie einfach mit einem '+' addieren so als anhaltspunkt eine stunde entspricht 1/24.
wenn du sowas machst würd ich das so machen:

Uhrzeit := StrToTime('10:00:00') + StrToTime('12:00:00');

das Ergebnis wär dann 22 Uhr oder 0,9167.
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Zeiten addieren

  Alt 5. Jan 2010, 14:45
Hi,

mein Beitrag zum Thema liefert eine Antwort auf die Frage nach dem Sinn und nicht auf die Methode, wie es geht UND einen kleinen Hinweis auf ein potentielles Problem...:

Angenommen, Du startest um 13:45 Uhr eine Aktion, die 6 Stunden und 32 Minuten dauert.
Wenn Du wissen willst, wann die Aktion beendet ist, wäre eine einfache Addition der Zeiten die einfachste Lösung.

Leider bietet Delphi meines Wissens nach keine Funktion, die mir die korrekte Addition zweier Zeitwerte erlaubt, wenn sie zusammen mehr als 24 Stunden ergeben.
Wenn ich in meiner Zeiterfassung die Projektzeiten addieren will, dann muss ich selbst dafür sorgen, dass ich am Ende weiß, wieviele Tage zu der Summe der Stunden zugerechnet werden müssen.

Wenn ich also beispielsweise 16 Stunden zu 16 Stunden hinzuaddiere, erhalte ich als Ergebnis 8 Stunden - was halt leider 24 Stunden zu wenig sind...

Gruß
Glühwürmchen

PS: Ihr wisst es besser?
Ich freue mich auf Antworten!
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Zeiten addieren

  Alt 5. Jan 2010, 15:47
Angenommen du addierst die erste Zeit 0,9876 und die zweite Zeit 0,6543 dann ergibt das 1,6419.
Wenn du daraus die Zeit extrahierst, dann bleibt auch nur der Zeitanteil bestehen (0,6419).
Trunc(Ergebniszeit) liefert dann die Anzahl der Tage (im Beispiel 1).
  Mit Zitat antworten Zitat
Benutzerbild von Glühwürmchen
Glühwürmchen

Registriert seit: 31. Okt 2003
Ort: Pfinztal
156 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Zeiten addieren

  Alt 5. Jan 2010, 17:04
Und jetzt habe ich wieder etwas gelernt!

Danke.
Gruß Glühwürmchen
<><
  Mit Zitat antworten Zitat
Delphi Freak

Registriert seit: 3. Jan 2010
13 Beiträge
 
Delphi 7 Personal
 
#9

Re: Zeiten addieren

  Alt 5. Jan 2010, 17:31
Danke an alle, die geantwortet haben, ich habe zwar nicht alle Antworten verstanden, aber mit der Möglichkeit von BUG habe ich mein Problem gelöst.

Gruß
Florian
"Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:29 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