AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Silvester Countdown

Ein Thema von netscanner · begonnen am 29. Dez 2005 · letzter Beitrag vom 1. Jan 2006
Antwort Antwort
Seite 2 von 3     12 3   
Thanatos81
(Gast)

n/a Beiträge
 
#11

Re: Silvester Countdown

  Alt 29. Dez 2005, 13:59
Und setz den Interval vom Timer am besten auf 999, da der Timer ab und an nicht 100%ig genau geht, kann es sont in seltenen Fällen dazu kommen, dass eine Sekunde übersprungen wird.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Silvester Countdown

  Alt 29. Dez 2005, 19:45
Zitat von Thanatos81:
Und setz den Interval vom Timer am besten auf 999, da der Timer ab und an nicht 100%ig genau geht, kann es sont in seltenen Fällen dazu kommen, dass eine Sekunde übersprungen wird.
Selbst wenn der Timer genau ginge, kann es zu diesem Vorfall kommen, da der Timer höchstwarscheinlich nicht genau zum Wechsel einer Sekunde gestartet wird.
Aber nachdem du nicht mithilfe des Timers zählst, sondern die Zeit jedes mal neu ausliest, sollte dies kein großer faux-pas sein.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Silvester Countdown

  Alt 30. Dez 2005, 05:34
Guten Morgen, allerseits.

Ich bin noch Anfänger und sitze momentan im Büro, wo ich kein Delphi installiert habe. Deshalb kann ich meinen Lösungsvorschlag nicht ausprobieren. Ich könnte mir aber folgende Lösung vorstellen:

Zielzeitpunkt ist 1.1.2006, also Neujahr := EnCodeDateTime(2006,1,1,0,0,0,0);
Mit "Now" erhalte ich die momentane Zeit, z.B. 31.12.2005 - 18:00:00
CountDown := Neujahr - Now sollte dann die Zeit bis Neujahr ergeben und Panel1.Caption := DecodeTime(CountDown) die Zeit bis zum Jahreswechsel anzeigen.

Ich hoffe, das funktioniert so.

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#14

Re: Silvester Countdown

  Alt 30. Dez 2005, 09:34
hi,

genau so würde ich es auch machen.

Und den ganzen code den es dann gibt, musst du nur noch ins onTimer Ereignis von einem Timer reinschreiben.

wenn du es genau haben willst, kannst du ja der intervall auf 1 oder auf 10 stellen, aber immer ein teiler von 1000, sonst könnte es dann doch ziemlich abweichen.

was du natürlich auch noch beachten musst, ist, die systemzeit sehr genau einzustellen, sonst nützt auch der kleinste inervall vom timer nichts...

gruss
urbanbruhin
  Mit Zitat antworten Zitat
kobel

Registriert seit: 6. Dez 2004
Ort: Attendorn
42 Beiträge
 
Delphi 6 Professional
 
#15

Re: Silvester Countdown

  Alt 30. Dez 2005, 09:51
netscanner,

wenn du möchtest schicke ich dir den code für mein countdownprojekt

gruß
kobel
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Silvester Countdown

  Alt 30. Dez 2005, 09:54
Zitat von urbanbruhin:
...wenn du es genau haben willst, kannst du ja der intervall auf 1 oder auf 10 stellen, aber immer ein teiler von 1000, sonst könnte es dann doch ziemlich abweichen.

was du natürlich auch noch beachten musst, ist, die systemzeit sehr genau einzustellen, sonst nützt auch der kleinste inervall vom timer nichts...
Entschuldige bitte, aber das ist Quark^3.
Wenn ich im Timer-Ereignis immer die Differenz zwischen '1.1.2006 00:00:00' und Jetzt anzeige, ist es absolut egal, wie genau die Systemzeit ist, und wie ich das Timerinterval einstelle, solange es < 1000 ist. Es wird dann garantiert jede Sekunde mindestens einmal die Zeit abgefragt.

Wie zeige ich die Differenz an?
Delphi-Quellcode:
Function RemainingTime(aStart, aStop: TDateTime): String;
Var
  iSeconds, iMins, iHrs, iDays: Int64;

Begin
  iSeconds := Trunc(0.5 + (aStop - aStart) * 86400); // Erstmal Sekunden ausrechnen und aufrunden
  Result := Format('%.2d sec', [iSeconds Mod 60]);
  iMins := iSeconds Div 60; // Minuten ausrechnen
  If iMins = 0 Then Exit;
  Result := Format('%.2d min, %s', [iMins Mod 60, Result]);
  iHrs := iMins Div 60; // Stunden ausrechnen
  If iHrs = 0 Then Exit;
  Result := Format('%.2d Std, %s', [iHrs Mod 24, Result]);
  iDays := iHrs Div 24; // Tage ausrechnen
  Case iDays of
    0 : ;
    1 :
      Result := Format('%d Tag, %s', [aSeconds, Result]);
    Else
      Result := Format('%d Tage, %s', [aSeconds, Result]);
  End
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#17

Re: Silvester Countdown

  Alt 30. Dez 2005, 10:03
Zitat:
Wenn ich im Timer-Ereignis immer die Differenz zwischen '1.1.2006 00:00:00' und Jetzt anzeige, ist es absolut egal, wie genau die Systemzeit ist,
aber mit DateTimeToStr(now) erhält man doch die systemzeit oder? wenn diese nicht stimmt, kann die differenz ja dann auch nicht stimmen.

Zitat:
[...] und wie ich das Timerinterval einstelle, solange es < 1000 ist. Es wird dann garantiert jede Sekunde mindestens einmal die Zeit abgefragt.
ja das ist mir auch klar, aber wenn der intervall z.B. 900 ist, und die zeit bei einem onTimer ereignis ist genau 10:10:10.99, dann wird ja 10:10:10 angezeigt. eine hundertstel sekunde später ist es jedoch schon 10:10:11, angezeigt wird diese zeit aber 0.8 sekunden zu spät.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Silvester Countdown

  Alt 30. Dez 2005, 11:20
Zitat von urbanbruhin:
Zitat:
Wenn ich im Timer-Ereignis immer die Differenz zwischen '1.1.2006 00:00:00' und Jetzt anzeige, ist es absolut egal, wie genau die Systemzeit ist,
aber mit DateTimeToStr(now) erhält man doch die systemzeit oder? wenn diese nicht stimmt, kann die differenz ja dann auch nicht stimmen.
Das ist ja wohl klar, dass wenn die Systemzeit nicht stimmt, dass dann keine korrekte Differenz berechnet werden kann.

Zitat von urbanbruhin:
Zitat:
[...] und wie ich das Timerinterval einstelle, solange es < 1000 ist. Es wird dann garantiert jede Sekunde mindestens einmal die Zeit abgefragt.
ja das ist mir auch klar, aber wenn der intervall z.B. 900 ist, und die zeit bei einem onTimer ereignis ist genau 10:10:10.99, dann wird ja 10:10:10 angezeigt. eine hundertstel sekunde später ist es jedoch schon 10:10:11, angezeigt wird diese zeit aber 0.8 sekunden zu spät.
Das habe ich in meinem vorherigem Post geschrieben:

Zitat von faux:
Zitat von Thanatos81:
Und setz den Interval vom Timer am besten auf 999, da der Timer ab und an nicht 100%ig genau geht, kann es sont in seltenen Fällen dazu kommen, dass eine Sekunde übersprungen wird.
Selbst wenn der Timer genau ginge, kann es zu diesem Vorfall kommen, da der Timer höchstwarscheinlich nicht genau zum Wechsel einer Sekunde gestartet wird.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Silvester Countdown

  Alt 30. Dez 2005, 12:28
[quote="urbanbruhin"]
Zitat:
... aber wenn der intervall z.B. 900 ist, und die zeit bei einem onTimer ereignis ist genau 10:10:10.99, dann wird ja 10:10:10 angezeigt. eine hundertstel sekunde später ist es jedoch schon 10:10:11, angezeigt wird diese zeit aber 0.8 sekunden zu spät.
Deshalb runden wir ja:
  • 10.99 => 11.00
    +0.9
    11.89 => 12.00
Die Genauigkeit stellt man natürlich mit dem Timerinterval ein. Wenn ich nur alle 5min. die Differenz anzeige, geht die natürlich auch entsprechend ungenau. Es ist aber nun mal so, das ich nicht alle 1ms die Zeit anzeigen muss, sondern eben nur alle paar 100 ms, z.B. 500 oder 900.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Silvester Countdown

  Alt 30. Dez 2005, 12:35
@urbanbruhin:
Wenn duwirklich exakt zu Mitternacht den Zeitpunkt haben willst, kannst du ja, je weniger Zeit bis Mitternacht bleibt, das Intervall verkleinern.

Delphi-Quellcode:
if secsToEnd < 120 then
  Timer1.Interval := secsToEnd * 10;
Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:58 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