Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTime bei über 24h abbruch (https://www.delphipraxis.net/4254-tdatetime-bei-ueber-24h-abbruch.html)

Haegar 21. Apr 2003 12:27


TDateTime bei über 24h abbruch
 
hi,
ich hab ne stoppuhr programmiert, als wert der hochgezählt wird hab ich dafür ne variable vom typ TDateTime verwendet, nun muss ich aber feststellen, das die zum beispiel bei über 24h ne fehlermeldung bringt.
also zumindest wenn ich den wert dann lade!
wenn er läuft, und erreicht die 24h marke, geht er ja auf 0 zurück!
nun die frage, kann ich es trotzdem mit diesem datentypen regeln, das er z.B. bis 99h läuft, man diesen wert speichert, und immer wieder laden kann ohne den abbruch? oder muss ich dafür nen andern datentypen nehmen?

gruss haegar

MrSpock 21. Apr 2003 14:39

Hallo Haegar,
der Abbruch liegt sicher nicht an dem TDateTime Typ, der eine Reele Zahl ist. Der Abbruch muss woanders herkommen. Poste doch mal die Stelle rund um die "Fehlerzeile".

Haegar 21. Apr 2003 15:01

das problem is ja erst zur laufzeit, un da kommt dann die fehlermeldung 25:04:00 is not a valid Time
jetzt als beispiel, ich denke er gibt die fehlermeldung bei 24:00:00 oder spätestens bei 24:00:01 aus!
ich glaube kaum das es an was anderem liegt, denn es klappt mimt allen angaben, nu nicht mit werten über die über 24h hinaus gehen

gruss haegar

MrSpock 21. Apr 2003 15:22

Hallo Haegar,

ich denke da hat Delphi ja nicht ganz unrecht :mrgreen: : so 25:08 ist ja ein wenig komisch. Die Frage ist aber wie erzeugst du aus deinem TDateTime Wert diese Anzeige?
Der Wert selbst ist ja wie gesagt einfach eine Realzahl.

Haegar 21. Apr 2003 15:26

hab das bisher so gemacht!
Delphi-Quellcode:
procedure TForm1.timerTimer(Sender: TObject);
begin
 dauer:=Now-start+bisher;
 lbl_zeit.Caption:=FormatDateTime('t',dauer);
end;

//im FormCreate
ShortTimeFormat:='hh "h" nn "min" ss "s"';
gruss haegar

MrSpock 21. Apr 2003 15:34

Hallo Haegar,

du ikannst entweder TimeToStr benutzen, eine Funktion, die immer nur Werte bis 24:00:00 ausgibt, oder um bei deinem Code zu bleiben. Wenn du nur den Teil nach dem Komma nutzt, erhälst du die Uhrzeit:

Delphi-Quellcode:
dauer:=Frac(Now-start+bisher);
Der Anteil vor dem Komma sind die ganten Tage, die du mit Frac einfach abschneidest.

Haegar 21. Apr 2003 15:43

naja mit der funktion TimeToStr und StrToTime hab ich sie gespeichert, bzw. lade sie damit....das problem is ja das ich nicht werte laden kann, die jenseits der 24h liegen, soll ich da nen anderen datentypen wählen?? oder geht das irgendwie mit dem TDateTime??
ich denke mal da liegt das problem :nerd:

gruss haegar

MrSpock 21. Apr 2003 15:47

Hallo Haegar,

du kannst es weiter wie bisher machen, wenn du wie oben gezeigt die Funktion Frac verwendest.

Haegar 21. Apr 2003 15:56

Liste der Anhänge anzeigen (Anzahl: 1)
und wenn ich dir sage das er trotzdem meckert? :nerd:
selbe fehlermeldung

gruss haegar
edit: so mal die fehlermeldung in anhang gemacht, war nur ein test mit der zeit, aber die erscheint nach wie vor immer noch

Wolff68 21. Apr 2003 18:02

Wie wärs denn mit dem hier als Anzeige:
Code:
dauer := IntToStr(MyHoursBetween(ANow, AThen))
        +FormatDateTime(':nn:ss:zzz', Abs(AThen-ANow));
Damit kannst die Stoppuhr laufen lassen, bis der Int64 überläuft (bis dahin sind wir nichtmal mehr Staub!) :wink:

Statt MyHoursBetween kannst auch HoursBetween aus der Unit DateUtils nehmen. Aber ich binde dieses Monster ungern wegen einer Zeile Code ein.
Hier der Code:
Code:
function MyHoursBetween(ANow, AThen: TDateTime): INT64;
begin
  Result := Trunc(24*Abs(AThen-ANow));
end;
Ähmm. ANow steht hierbei für die StartZeit, und AThen für die Stop-Zeit.
(Wobei es hier ohnehin egal ist, wenn Du das vertauschst)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 Uhr.
Seite 1 von 3  1 23      

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