Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Uhrzeiten Addieren? (https://www.delphipraxis.net/78720-uhrzeiten-addieren.html)

smart 10. Okt 2006 09:16


Uhrzeiten Addieren?
 
Hallo Alle!

Wie kann man mit Delphi Uhrzeiten Addieren. ZB. 00:60 Sek. + 00:45 Sek. Bei mir kommt da immer 01:05 raus. Richtig ist aber 01:45.

Gruß
Heike

Klaus01 10. Okt 2006 09:20

Re: Uhrzeiten Addieren?
 
Beide Werte in das Zeitformat umwandeln dann addieren und wieder in einen String umwandeln.
StrToTime könnte hier hilfreich sein.

Grüße
Klaus

arbu man 10. Okt 2006 09:21

Re: Uhrzeiten Addieren?
 
Von welchen typ sind denn die Uhrzeiten bei TTime sollte es eigentlich gehen.

Delphi-Quellcode:
showmessage(TimeToStr(TTimeWert1 + TTimeWert2));

smart 10. Okt 2006 09:33

Re: Uhrzeiten Addieren?
 
Zitat:

Zitat von arbu man
Von welchen typ sind denn die Uhrzeiten bei TTime sollte es eigentlich gehen.
Delphi-Quellcode:
showmessage(TimeToStr(TTimeWert1 + TTimeWert2));

Hallo Björn!

Das hatte ich auch schon versucht:
Delphi-Quellcode:
showmessage(TimeToStr('00:30:00' + '00:30:00'));
oder
Delphi-Quellcode:
showmessage(TimeToStr('00:30.00' + '00:30.00'));
oder
Delphi-Quellcode:
showmessage(TimeToStr('00:30' + '00:30'));
Dabekomme ich immer ne Fehlermeldung vom Type:
Inkompatible Typen: 'TDateTime' und 'String'

Gruß
Heike

Balu der Bär 10. Okt 2006 09:37

Re: Uhrzeiten Addieren?
 
Delphi-Quellcode:
showmessage(TimeToStr(StrToTime('00:30') + StrToTime('00:30')));

smart 10. Okt 2006 09:39

Re: Uhrzeiten Addieren?
 
Zitat:

Zitat von Balu der Bär
Delphi-Quellcode:
showmessage(TimeToStr(StrToTime('00:30') + StrToTime('00:30')));

Vielen Damk, Das was der Fehler.

Gruß
Heike

Neon-chan 10. Okt 2006 09:40

Re: Uhrzeiten Addieren?
 
Dass bei 00:30 + 00:45 1:05 rauskommt liegt einfach daran, dass die letzte Stelle einer TTime variable nicht Sekunden sondern Millisekunden angibt

Klaus01 10. Okt 2006 09:41

Re: Uhrzeiten Addieren?
 
Zitat:

Zitat von smart
Zitat:

Zitat von arbu man
Von welchen typ sind denn die Uhrzeiten bei TTime sollte es eigentlich gehen.
Delphi-Quellcode:
showmessage(TimeToStr(TTimeWert1 + TTimeWert2));

Hallo Björn!

Das hatte ich auch schon versucht:
Delphi-Quellcode:
showmessage(TimeToStr('00:30:00' + '00:30:00'));
oder
Delphi-Quellcode:
showmessage(TimeToStr('00:30.00' + '00:30.00'));
oder
Delphi-Quellcode:
showmessage(TimeToStr('00:30' + '00:30'));
Dabekomme ich immer ne Fehlermeldung vom Type:
Inkompatible Typen: 'TDateTime' und 'String'

Gruß
Heike

Hallo Heike,

wenn Du die Zeiten so addieren willst, müssen die sie als TTime vorliegen
also als Floatwert.

Du kannst Deine Stringwerte "00:00:30" aber mit StrToTime konvertieren.

Grüße
Klaus

smart 10. Okt 2006 10:32

Re: Uhrzeiten Addieren?
 
Ist es auch möglich, das ganze als Integer um zu wandeln?
Z.B.
Delphi-Quellcode:
TimeToStr(StrToTime(Zeit));
Als Integer
Delphi-Quellcode:
StrToInt(TimeToStr(StrToTime(Zeit)));
Geht nicht.

Gruß
Heike

Neon-chan 10. Okt 2006 10:39

Re: Uhrzeiten Addieren?
 
Nein das geht nicht

TTime, TDate und TDateTime sind immer Float-Werte und nicht mit Integer kompatibel

Was genau möchtest du den erreichen?

smart 10. Okt 2006 10:50

Re: Uhrzeiten Addieren?
 
Zitat:

Zitat von Neon-chan
Nein das geht nicht

TTime, TDate und TDateTime sind immer Float-Werte und nicht mit Integer kompatibel

Was genau möchtest du den erreichen?

In einer Eingabe Box soll der Anwender eine gewisse Zeit eingeben z.B. ‚5:20’ also 5 Minuten und 20 Sekunden. (Ist ein String). Jetzt soll diese Zeiteingabe mit einer anderen zusammen gerechnet werden. Gleichzeitig soll diese Zeit dann visuell z. B. an einem Scrollbalken dargestellt werden. Dazu brauche ich dann die Zeit als Integer. Ich brauchen jetzt nur noch eine Umrechnung die aus ‚5:20’ -> 320 macht.

Gruß
Heike

Klaus01 10. Okt 2006 10:56

Re: Uhrzeiten Addieren?
 
TDateTime ist ein Floatwert,
Wobei der Dezimalwert die Tage angibt und der Dezimalbruch den Bruchteil eines Tages.

Mit frac läßt sich der Dezimalbruch aus dem Floatwert heraustrennen.
Damit und mit einer Konstante (1000 oder so) zum Multiplizieren sollte sich dann ein Scrollbalken oder Progressbar betreiben lassen.

Grüße
Klaus

Neon-chan 10. Okt 2006 10:56

Re: Uhrzeiten Addieren?
 
Zur Not kannst du es übe StringList und Delimited String machen

Delphi-Quellcode:

var
  Sekunden:Integer;
  Buffer: TStringList;
begin
  Buffer := TStringList.Create;
  try
    Buffer.Delimiter := ':';
    Buffer.DelimitedText := '5:30'; //hier kommt dann halt deine stringvariable hin

    Sekunden := (StrtoInt(Buffer.Strings[0]) * 60 ) + StrToInt(Buffer.Strings[1]);
  finally
    Buffer.free;
  end;
end;
sollte so klappen, auch wenns sicher eleganter geht ^^

chrisw 10. Okt 2006 10:58

Re: Uhrzeiten Addieren?
 
Also um aus "5:20" "320" zu machen kannst Du folgendes nutzen:

Delphi-Quellcode:

var h,m,s,msec : Word;
    zeit : String;
begin
  Zeit := '5:20';
  decodetime(StrToTime(zeit),h,m,s,msec);
  showmessage(Inttostr(h*60 + m)); // sind 320 Minuten
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.

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