AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Uhrzeit Stunden und Minuten abrunden
Thema durchsuchen
Ansicht
Themen-Optionen

Uhrzeit Stunden und Minuten abrunden

Ein Thema von klaus9 · begonnen am 7. Okt 2013 · letzter Beitrag vom 10. Okt 2013
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#11

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 09:50
Zitat:
Code:
  function MinutesRounded (const Value : Integer) : Word;
  begin
    if Value < 5 then
      Result := 0
    else
      Result := 5 * (Value div 5)
  end;
Sollte 4..0 div 5 nicht immer 0 ergeben und das komplette if-else damit überflüssig sein ?
Leo S.

Geändert von Meflin ( 9. Okt 2013 um 10:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 10:21
Sollte 4..0 div x nicht immer 0 ergeben
Vielleicht eine falsche Matheregel?

0 durch irgendwas ist erlaubt, aber bei irgendwas durch 0 knallt es natürlich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#13

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 10:24
Hallo

vielen Dank habe es jetzt fast fertig mit dem Code vom volker

Jetzt liegt nur ein Problem vor wenn wir 11.05uhr haben Minus 15minuteb zeigt er mir
Bei Std 11an statt 10 und bei min 00 statt 50

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
* h, m, s, z : Word;
*
* function MinutesRounded (const Value : Integer) : Word;
* begin
*** if Value < 5 then
***** Result := 0
*** else
***** Result := 5 * (Value div 5)
* end;
*
* function FormatTime (const Hour, Minute : Word) : string;
* begin
*** Result := Format ('%.2d', [Minute])
* end;
* function FormatTimeh (const Hour, Minute : Word) : string;
* begin
*** Result := Format ('%.2d', [Hour])
* end;
*
begin
* DecodeTime (Now, h, m, s, z);
* Edit2.Text := FormatTimeh (h, m);
* Edit1.Text := FormatTimeh (h, m);
* Edit4.Text := FormatTime (h, MinutesRounded (m));
* Edit3.Text := FormatTime (h, MinutesRounded (m - 15));
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 10:48
Tja, wenn du Minuten und Stunden getrennt verwaltest, dann mußt du bei der Subtraktion der 15 Minuten natürlich auch die Stunden anpassen, wenn es einen "überlauf" gibt.

Eine Stunde abziehen, wenn es weniger als 15 Minuten sind.
Edit3.Text := FormatTime (h - IfThen(m < 15, -1, 0), MinutesRounded (m - 15)); Aber, jetzt natürlich nicht vergessen, daß aus 0:05 Uhr jetzt -1 uhr würde.
Also mußt du hier natürlich auch wieder auf die 24 Stunden achten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#15

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 13:49
Irgendwie klappt es nicht
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#16

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 16:31
Hallo,

Zitat:
Code:
  function MinutesRounded (const Value : Integer) : Word;
  begin
    if Value < 5 then
      Result := 0
    else
      Result := 5 * (Value div 5)
  end;
Sollte 4..0 div 5 nicht immer 0 ergeben und das komplette if-else damit überflüssig sein ?
Ist schon richtig für 0..4. Nur nicht mehr -15..-6. Mit MinutesRounded (m - 15) durchaus möglich. Aus den (etwas wirren) Vorgaben des TE war nicht klar abzuleiten was er den eigentlich erreichen möchte. Deshalb habe ich die negativen Fälle mit dem Rückgabewert 0 behandelt.

Zitat:
Irgendwie klappt es nicht
Und was klappt nicht? Kannst Du mal Infos liefern?

Hast Du es so schon mal versucht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  h, m, s, z : Word;

  function MinutesRounded (const Value : Integer) : Word;
  begin
   Result := 5 * (Value div 5)
  end;

  function FormatTime (const Hour, Minute : Word) : string;
  begin
   Result := Format ('%.2d:%.2d', [Hour, Minute])
  end;

begin
  DecodeTime (Now, h, m, s, z);

  Edit1.Text := FormatTime (h, m);
  Edit3.Text := FormatTime (h, MinutesRounded (m));
  if m - 15 > -1 then
    Dec (m, 15)
  else
   begin
     m := 50;
     if h - 1 > -1 then
       Dec (h)
     else
       h := 23
   end;
  Edit4.Text := FormatTime (h, MinutesRounded (m));
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#17

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 21:30
Hi Volker,

deine Variante funktioniert super..

er Zeigt mir jetzt wie gewünscht an:

Edit1.text = 22:26
Edit3.text = 22:25

Edit4.text = leer
Edit2.text = 22:10


jetzt muss ich nur noch aus diesen Werten die Felder splitten um diese wie gewünscht anzeigen zu lassen.

Edit1.text = 22 (nur Stunden angezeigt ohne minuten abgerundete version)
Edit3.text = 22 (nur Stunden jetzt STD ohne minuten)

Edit4.text = 25 (nur Minuten angezeigt ohne Stunden agerundete version)
Edit2.text = 10 (nur Minuten angezeigt ohne Stunden -15Min abgerundete version)


Würde halt gerne in den Edit Feldern nur die Stunden und nur die Minuten anzeigen lassen..
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#18

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 22:25
Hallo,

Zitat:
Würde halt gerne in den Edit Feldern nur die Stunden und nur die Minuten anzeigen lassen..
Und wo liegt dann Dein Problem? Wenn die Funktion FormatTime zwei Parameter (Stunde und Minute) nimmt und als Ergebnis sowas wie 22:26 zurückgibt, dann sollte es doch eigentlich nicht so schwer sein die Funktion so umzuschreiben, dass nur ein Parameter (entweder Stunde oder Minute) übergeben wird und der Rückgabewert der entsprechend formatierten Zeichenfolge entspricht.
Also:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function FormatTime (const Value : Word) : string;
  begin
    Result := Format ('%.2d', [Value])
  end;

begin
  Edit1.Text := FormatTime (h);
  Edit2.Text := FormatTime (m)
end;
Schau Dir bei Gelegenheit in der OH die Erläuterungen zu Format und all den anderen im Thread aufgeworfenen Themen an.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 22:51
Ist schon richtig für 0..4. Nur nicht mehr -15..-6. Mit MinutesRounded (m - 15) durchaus möglich.
Wobei es dann aber falsch rechnet, denn aus 01 müßte ja 45 werden und nicht 00
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#20

AW: Uhrzeit Stunden und Minuten abrunden

  Alt 9. Okt 2013, 23:54
Hallo,

Ist schon richtig für 0..4. Nur nicht mehr -15..-6. Mit MinutesRounded (m - 15) durchaus möglich.
Wobei es dann aber falsch rechnet, denn aus 01 müßte ja 45 werden und nicht 00
nope (mit verlaub ), da rechnet nix falsch. Bei klaren Vorgaben, entsprechende Programmierergebnisse. Fehlen diese kann nur geraten werden was der TE den eigentlich will; ich habe geraten und lag da wohl an der einen oder anderen Stelle ein klein wenig daneben (ansonsten konnte ich offenbar weiterhelfen).

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:55 Uhr.
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