Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler beim Zeitvergleichen (https://www.delphipraxis.net/117400-fehler-beim-zeitvergleichen.html)

SaFu 17. Jul 2008 14:46


Fehler beim Zeitvergleichen
 
Hi

Nachdem mein Programm jetzt läuft, wollte ich es mal testen da ist mir doch aufgefallen, das der Server auf dem ich es gelegt und getestet habe eine Engliche Systemzeit hat.

Ich vergleiche Aktuelleuhrzeit mit Eingegebeneruhrzeit

Delphi-Quellcode:
sUhrzeit:= TimeToStr(DateTimePicker1.Time); // Eingestellte Zeit

procedure TForm1.Timer2Timer(Sender: TObject);
begin
 Aktuell:= (FormatDateTime('hh:mm:ss', now)); // Systemzeit
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
  if Aktuell = sUhrzeit then
  begin
   Button7.Click; // dateien älter als löschen
  end;
end;
Nur leider ist die Aktuellezeit auf dem Srever englich, auf meinem deutschen System funzt es sehr gut wo kann ich da jetzt mal nachschauen??

Oder was gibt es für Lösungen

mkinzler 17. Jul 2008 14:52

Re: Fehler beim Zeit vergleichen
 
Vergleiceh nicht die Strings sondern die DateTime-Werte

RavenIV 17. Jul 2008 14:56

Re: Fehler beim Zeit vergleichen
 
Zitat:

Zitat von mkinzler
Vergleiceh nicht die Strings sondern die DateTime-Werte

Und denk dran, dass es Real-Werte sind.
Die solle man nicht mit "=" vergleichen, sondern immer den Umweg über "delta" gehen.

Such hier im Forum nach "Real vergleichen" oder "Float vergleichen"

littleDave 17. Jul 2008 15:19

Re: Fehler beim Zeitvergleichen
 
Zitat:

Zitat von fuknersascha
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 Aktuell:= (FormatDateTime('hh:mm:ss', now)); // Systemzeit
end;

Deine Format-Ausgabe ergibt "Stunde : Monat : Sekunde". "m" ist der Bezeichner für Month, für Minute gibt es "n" ->
'hh:nn:ss' wird die Zeitausgaber erstmal richtig ausgeben.

marabu 17. Jul 2008 15:43

Re: Fehler beim Zeitvergleichen
 
Hallo,

Zitat:

Zitat von littleDave
... 'hh:nn:ss' wird die Zeitausgaber erstmal richtig ausgeben.

Borland wusste um die Doppeldeutigkeit von mm bei kombinierten Datum- und Zeit-Werten und hat die Funktion so gebaut, dass trotzdem das erwartete Ergebnis produziert wird.

Grüße vom marabu

SaFu 18. Jul 2008 08:40

Re: Fehler beim Zeit vergleichen
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von mkinzler
Vergleiceh nicht die Strings sondern die DateTime-Werte

Und denk dran, dass es Real-Werte sind.
Die solle man nicht mit "=" vergleichen, sondern immer den Umweg über "delta" gehen.

Such hier im Forum nach "Real vergleichen" oder "Float vergleichen"

Also ich muss den Wert noch in eine Ini schreiben das heist es wäre besser wenn ich Float nehme oder leige ich da falsch

mkinzler 18. Jul 2008 08:42

Re: Fehler beim Zeitvergleichen
 
Ja ich würde die Werte im TDateTime-Format (Double) ablegen. Diese sind landesunabhängig

SaFu 18. Jul 2008 08:44

Re: Fehler beim Zeitvergleichen
 
jetzt nochmal ne blöde Frage wie mache ich das hier mit der Aktuellen zeit

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Aktuell:= (FormatDateTime('hh:mm:ss', now)); // Systemzeit
end;

mkinzler 18. Jul 2008 08:46

Re: Fehler beim Zeitvergleichen
 
Now ist im Datetime-Format

Sharky 18. Jul 2008 08:46

Re: Fehler beim Zeitvergleichen
 
Hai fuknersascha,

warum beharst Du denn darauf die Zeit als String zu hinterlegen?

SaFu 18. Jul 2008 08:49

Re: Fehler beim Zeitvergleichen
 
nein mach ich nicht, falsch verstanden.

Sonnst hätte ich ja immernoch das Problem mit dem englischen.

Ich wollte nur fragen, ob es so richtig ist oder besser gesagt, wie ich den Doublewert der Aktuellen Zeit bekomme.

So???

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Aktuell:= (now); // Systemzeit
end;

mkinzler 18. Jul 2008 08:55

Re: Fehler beim Zeitvergleichen
 
Wenn Aktuell vom Typ TDateTime ist ja. Wobei du die Klammer weglassen und auf die Variable verzichten kannst

marabu 18. Jul 2008 09:04

Re: Fehler beim Zeitvergleichen
 
Moin,

es ist eine wunderbare Eigenschaft der INI-Dateien, dass sie vom Menschen ohne Verrenkungen gelesen und geschrieben werden können. Ich würde Datum- und bzw. oder Zeitwerte dort als Text speichern: 2008-07-18. Das Format mag eventuell vom ShortDateFormat des Users abweichen, aber das sehe ich nicht als Problem.

Freundliche Grüße

Sharky 18. Jul 2008 09:14

Re: Fehler beim Zeitvergleichen
 
Zitat:

Zitat von marabu
... Ich würde Datum- und bzw. oder Zeitwerte dort als Text speichern: ...

In der INI würde ich das auch machen.
Aber in der Variablen würde ich TDateTime speichern und erst beim schreiben in die INI umwandeln.

SaFu 18. Jul 2008 11:24

Re: Fehler beim Zeitvergleichen
 
Ok Danke hat soweit alles funktioniert


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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