#1 9. Juni 2009 [Delphi]"Countdown" zu vordefinierter Zeit Hi, bräuchte mal ein paar Ansätze zu einer eigentlich simplen Idee. Flieg zusammen mit 3 Kumpels in ~7 Wochen in Urlaub, nun wollt ich ein kleines Programm schreiben, welches einem immer wenn man es öffnet unter anderem dann zeigt, wie lange es noch bis zum Abflug dauert. Wie kann ich das in Delphi realisieren? :> Bräuchte nen paar Tipps wie ich anfangen soll, Rest versuch ich dann allein zu schaffen^^ + Multi-Zitat Zitieren
#2 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit - Zeit des Abflugs festlegen (ist ja konstant) - Aktuelle Zeit holen (geht mit Now) (- evtl. in Unix-Zeit umwandeln (ich weiß nicht, inwieweit Delphi dir das subtrahieren abnimmt)) - Differenz berechnen - Ausgeben lassen + Multi-Zitat Zitieren
#3 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit mich würde forweg interessieren wieviel erfahrung du mit delphi hast ? also cih würde entweder die timer-funktion benutzen oder eben eine schleife . timer : If Zähler = 1 then begin Timer1.Enabled := false; Exit; end; Dec(Zähler); schleife(down-to): procedure Button1Click(Sender: TObject); Var Zähler: Integer; begin Zähler := irgendeinWet; For I := Zähler downto 1 do begin {beliebiger Code} end; hoffe konnte helfen + Multi-Zitat Zitieren
#4 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit Subtrahieren und Addieren von Zeiten funktioniert ganz gut meiner Erfahrung nach aber nur bei der Uhrzeit. Wenn du das Datum dann ausgibts kommt beim Jahr immer irgendwas mit 18xx raus. Das müsstet du dann irgendwie umrechnen. Code: ZeitDifferenz := Zeit_in_der_Zukunfg - NOW; String := TimeToStr(ZeitDifferenz); Mal ne Kurze erklärung zu der Zeit: Die Uhrzeit wird als Dezimalzahl dargestellt. 1 = 24Uhr 0 = 0Uhr. Wenn es 12 Uhr Mittags ist hat die Uhrzeit einen Wert von 0,5. Beim Datum Dürfte es ähnlich ablaufen + Multi-Zitat Zitieren
#5 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit Ja wie gesagt, ich weiß nicht obs da bei Delphi n speziellen Typ gibt, der einem das Addieren/Subtrahieren abnimmt. Deswegen meinte ich, man sollte das Datum vllt. in nen UNIX-Timestamp umwandeln (das wird delphi ja wohl können ) und dann subtrahieren. Und ein Timer wären natürlich auch nicht shclecht, wie Kaleb festgestellt hat + Multi-Zitat Zitieren
#6 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit Vielen Dank an alle, hat super geklappt. Habe nur ein Problem mit der aktuellen Zeit. Diese hole ich mir in der FormCreate prozedur direkt beim programmstart über Code: Label1.Caption := FormatDateTime('dd.mm.yyyy hh:ss', Now); Klappt auch soweit, allerdings unterscheidet sich die Uhrzeit öfter mal von der wirklichen aktuellen Zeit^^ Sind teilweise 15-45 Minuten Unterschied, variiert ab und zu. In der Taskleiste wird meine Uhrzeit allerdings richtig angezeigt. Weiß jemand woran das liegt? + Multi-Zitat Zitieren
#7 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit ich hab mal etwas ähnliches programmiert ^^ ich an deiner stelle würde eine Variable today oder so definieren von Typ TDateTime und dann today:= now; . Mit today kannst du dann auch rechnen Mein Programm: Spoiler Code: var Form1: TForm1; today,silvester: TDateTime; tage,stunden,minuten,sekunden:integer; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin today:= now; silvester:= EncodeDate(2010, 01, 01); Tage:= secondsbetween(silvester,today) div 86400; Stunden:= (secondsbetween(silvester,today) mod 86400) div 3600; Minuten:= ((secondsbetween(silvester,today) mod 86400) mod 3600) div 60; Sekunden:= ((secondsbetween(silvester,today) mod 86400) mod 3600) mod 60 + 1; label3.caption:= 'Noch ' + inttostr(tage) + ' Tage, ' + inttostr(stunden) + ' Stunden, ' + inttostr(minuten) + ' Minuten und ' + inttostr(sekunden) + ' Sekunden bis zum Jahr 2010 !'; end; + Multi-Zitat Zitieren
#8 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit Danke, habe ich auch erst drüber nachgedacht aber dann aus Bequemlichkeit erstmal so probiert. Und habe nun eine Kleinigkeit geändert und nun scheint es auch ohne Probleme zu funktionieren. Habe einfach aus Code: Label1.Caption := FormatDateTime('dd.mm.yyyy hh:ss', Now); das hier gemacht Code: Label1.Caption := DateTimeToStr(Now); Nun wird die Uhrzeit immer korrekt angezeigt^^ Vielen Dank nochmal an alle, das müsste es jetzt gewesen sein :> + Multi-Zitat Zitieren
#9 9. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit mmh ich verstehe den Sinn darin aber irgendwie nicht. Der Name now sagt doch genauso viel aus wie today. Also warum dann ne extra variable dafür bereitstellen? In der heutigen Zeit hat man zwar genug Systemressourcen.... aber naja^^ ist halt n bisal arbeit + Multi-Zitat Zitieren
#10 14. Juni 2009 AW: [Delphi]"Countdown" zu vordefinierter Zeit Hehe das is das "schöne" an Delhi, man erkennt den unterschied zwischen Variablen und Funktionen nicht umbedingt. Man braucht wie Shark gesagt hat die Variable today, um mit der zeit zu rechnen. Now ist eine Funktion, die als Rückgabewert TDateTime hat .. diesen Wert kann man dann einer Variable zuweisen, aber damit rechnen würde nicht stimmen, weil bei jedem aufruf eine andere Zeit / Datum rauskommt. In Shark's Quellcode splittet er die Zeit dann in Sekunden, Minuten, Stunden etc und das würde bei jedem aufruf von now ( eig now() ) einen anderen Wert ergeben. MFG C4rc4ss + Multi-Zitat Zitieren