Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Uhrzeiten vergleichen (https://www.delphipraxis.net/128008-uhrzeiten-vergleichen.html)

Tango 17. Okt 2014 23:16

AW: Uhrzeiten vergleichen
 
Danke an euch beiden.sobald ich von der Arbeit komme werde ich es genauer studieren und testen.

hstreicher 18. Okt 2014 10:15

AW: Uhrzeiten vergleichen
 
mal ein Alternativvorschlag ,
anstatt die Zeiten zu vergleichen ,
prüf doch einfach wies spät ist es, wann ist die nächste Aktion fällig
und setzt den Timer auf die Differenz

hathor 18. Okt 2014 13:04

AW: Uhrzeiten vergleichen
 
Den Stundenwechsel kann man einfach so erfassen:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var aHour,aMin,aSec,aMSec: Word;
begin
repeat
  Label1.Caption := TimeToStr(Time);
  DecodeTime(now,aHour,aMin,aSec,aMSec);
  sleep(1000);
until (aHour in [6..19]) and (aMin = 0);
 Winapi.Windows.Beep(1500,200); // ----ab hier ACTION !
end;

Dejan Vu 18. Okt 2014 18:57

AW: Uhrzeiten vergleichen
 
Oder so:

Delphi-Quellcode:
Const
  SixAM = 6/24;
  SevenPM=19/24;

var
  theTime : Double;

begin
  theTime := Fract(Now);
  if (theTime >= sixAM) and (theTime <=SevenPM) then
    ShowMessage('Es ist irgendwann zwischen 06:00 und 19:00');

Tango 18. Okt 2014 18:58

AW: Uhrzeiten vergleichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Sir Rufo (Beitrag 1276463)
Erst mal formatieren, dann schauen, dann denken
Delphi-Quellcode:
procedure*TForm1.Timer1Timer(Sender: TObject);
Var*
  Time, LastTime: TDateTime;
begin
**If*(Frac(Time) <= StrToTime('06:00:00'))*and*(Frac(Time) > StrToTime('14:00:00'))
**Then
****LastTime := now;

  edit1.Text:= 'Frühschicht';

  If*(Frac(Time) <= StrToTime('14:00:01'))*and*(Frac(Time) > StrToTime('22:00:00'))
**Then
    edit1.Text:= 'Spätschicht';

  LastTime := Now ;
end;

end.
Welchen Wert hat
Delphi-Quellcode:
Time
? - Irgendeinen, also ein Zufallsgenerator?
Wofür wird
Delphi-Quellcode:
LastTime
ein Wert zugeordnet? Für nix.

Ich würde es mal damit probieren
Delphi-Quellcode:
function GetShiftNameFromTime ( ATime : TTime ): string;
var
  LTime : TTime;
begin
  LTime := Frac ( ATime );
  if LTime < EncodeTime ( 6, 0, 0 )
  then
    Result := 'Nachtschicht'
  else if LTime < EncodeTime ( 14, 0, 0 )
  then
    Result := 'Frühschicht'
  else if LTime < EncodeTime ( 22, 0, 0 )
  then
    Result := 'Spätschicht'
  else
    Result := 'Nachtschicht';
end;
Verwenden dann so
Delphi-Quellcode:
procedure TForm1.Timer1Timer ( Sender : TObject );
begin
  Edit1.Text := GetShiftNameFromTime ( Now );
end;

So habe es mal ausprobiert, bekomme Fehlermeldung, nicht des so Trotzt so wie ich es verstanden habe überprüft der Timer ob es exakt 6:00 oder 14:00 ist
es sollte aber zwischen 6:00-14:00, 14:01-22:00, 22:01-6:00 unterscheiden.

Sir Rufo 18. Okt 2014 19:22

AW: Uhrzeiten vergleichen
 
Ein Blick in die Doku Delphi-Referenz durchsuchenEncodeTime oder ein STRG-Click hätte dir sofort geholfen. :roll:

Kein Wunder, dass Emba sich damit Zeit lässt, denn gefühlt schaut da niemand rein.

Und nein es wird nicht exakt auf den Zeitpunkt geprüft, sondern in welchem Bereich der übergebene Zeitpunkt liegt.
Code:
Wenn Vor 06:00 dann Nachtschicht
Sonst Wenn Vor 14:00 dann Frühschicht
Sonst Wenn Vor 22:00 dann Spätschicht
Sonst Nachtschicht
Ach ja, der Timer prüft gar nichts, sondern der sorgt nur dafür, dass das Edit-Control die Schicht-Bezeichnung zur aktuellen Uhrzeit bekommt. Oder was heisst wohl GetShiftNameFromTime? Wenn man das noch sprechender gestalten will, dann benötigt man wohl zusätzliche externe Hardware (Holzhammer) ;)

Tango 18. Okt 2014 20:05

AW: Uhrzeiten vergleichen
 
Danke, dank deiner Link habe ich gesehen das die Millisekunde gefehlt hat, eingetragen schon lief alles wie es soll.
Nur das mit dem Strg+click funktioniert nicht, sobald ich auf dem Code draufgehe und Strg+Click passiert bei mir nichts. Es soll so wie ich verstanden habe mir die Doku öffnen für das passende Befehl.

Sir Rufo 18. Okt 2014 20:13

AW: Uhrzeiten vergleichen
 
Mit gedrückter STRG Taste auf das Wort klicken und es öffnet sich die Unit und der Cursor steht direkt im Quelltext auf der Definition. Man kann also sofort sehen, wie das deklariert ist und was da genau passiert.

himitsu 18. Okt 2014 20:17

AW: Uhrzeiten vergleichen
 
In der Starter gibt es keine RTL/VCL-Quellcodes,
aber das Help-Insight gibt es hoffentlich (Mauszeiger 'nen paar Sekunden über den Befehl halten)
und natürlich das F1. :roll:

Im Debugger fehlt das Insight "Wert der Variable anzeigen" im Starter, so wie vieles Andere ebenfalls.

Tango 18. Okt 2014 20:25

AW: Uhrzeiten vergleichen
 
Danke an euch allen, ja mit Starter hat es wie du sagtest mit Befehl auswählen und f1 drücken geklappt :) habe heute vieles gelernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Seite 3 von 4     123 4      

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