AGB  ·  Datenschutz  ·  Impressum  







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

Uhrzeiten vergleichen

Ein Thema von Ykcim · begonnen am 22. Jan 2009 · letzter Beitrag vom 19. Okt 2014
Antwort Antwort
Tango

Registriert seit: 17. Apr 2011
Ort: Aachen
64 Beiträge
 
Delphi XE2 Starter
 
#1

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 18:58
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 Time ? - Irgendeinen, also ein Zufallsgenerator?
Wofür wird 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.
Angehängte Grafiken
Dateityp: jpg Unbenannt.jpg (77,7 KB, 10x aufgerufen)
  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
 
#2

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 19:22
Ein Blick in die Doku Delphi-Referenz durchsuchenEncodeTime oder ein STRG-Click hätte dir sofort geholfen.

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)
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)

Geändert von Sir Rufo (18. Okt 2014 um 19:26 Uhr)
  Mit Zitat antworten Zitat
Tango

Registriert seit: 17. Apr 2011
Ort: Aachen
64 Beiträge
 
Delphi XE2 Starter
 
#3

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 20:05
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.
  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
 
#4

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 20:13
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.
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.361 Beiträge
 
Delphi 12 Athens
 
#5

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 20:17
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.

Im Debugger fehlt das Insight "Wert der Variable anzeigen" im Starter, so wie vieles Andere ebenfalls.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Okt 2014 um 20:19 Uhr)
  Mit Zitat antworten Zitat
Tango

Registriert seit: 17. Apr 2011
Ort: Aachen
64 Beiträge
 
Delphi XE2 Starter
 
#6

AW: Uhrzeiten vergleichen

  Alt 18. Okt 2014, 20:25
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.
  Mit Zitat antworten Zitat
Tango

Registriert seit: 17. Apr 2011
Ort: Aachen
64 Beiträge
 
Delphi XE2 Starter
 
#7

AW: Uhrzeiten vergleichen

  Alt 19. Okt 2014, 20:05
Habe mal etwas experimentiert, aber eins verstehe ich nicht (obwohl es klappt) im Doku steht

Code:
EncodeTime codiert die angegebenen Werte für Stunde, Minute, Sekunde und Millisekunde in einen Wert des Typs TDateTime.

[B]Für Hour sind Werte von 0 bis 23 zulässig.[/B]

Die gültigen Werte für Min und Sec liegen zwischen 0 und 59.

Die gültigen Werte für MSec liegen zwischen 0 und 999.
Wenn ich h=23 einstelle bekomme ich 23x falsches Wert wenn ich aber h=24 eingebe funktioniert es.

Delphi-Quellcode:
function GetShiftNameFromTime ( ATime : TTime ): string;
var
  LTime : TTime;
begin
  LTime := Frac ( ATime );
  if LTime < EncodeTime ( 6, 0, 0, 0 )
  then
    Result := 'Nachtscicht'
  else if LTime < EncodeTime ( 14, 0, 0, 0 )
  then
    Result := 'Frühschicht'
  else if LTime < EncodeTime ( 22, 0, 0, 0 )
  then
    Result := 'Spätschicht'
  else
    Result := 'Nachtschicht';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Edit1.Text := GetShiftNameFromTime ( Now );
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
h, m, s, ms: Word;
begin
DecodeTime(Time, h, m, s, ms);
if (h >= 6) and (h< 24) then edit2.Text:=DateToStr(now)
else
edit2.Text:=DateToStr(now -1);
end;

end.
  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 02:11 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