Delphi-PRAXiS

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 Countdown der auf Now Zeit zurück greift (https://www.delphipraxis.net/81759-countdown-der-auf-now-zeit-zurueck-greift.html)

bellyman 3. Dez 2006 13:31


Countdown der auf Now Zeit zurück greift
 
Hey leute, bin noch n ziemlicher newbie in Sachen Delphi und habe eine Frage.

Ich möchte einen Countdown in meine Form einbauen. Dieser soll die Systemzeit errechnen, berechnen wie lange es von der Systemzeit noch bis 10:00 Uhr dauert und die Restzeit fortlaufend in deinem Label anzeigen. Wie geht das?
Es ist also kein normaler Countdown mit festgelegter Zeit sondern mit einer die sich ständig ändert...


DAAAANKE schonmal ;)

Der_Unwissende 3. Dez 2006 15:55

Re: Countdown der auf Now Zeit zurück greift
 
Hi und Herzlich Willkommen in der DP :dp:


Zitat:

Zitat von bellyman
Ich möchte einen Countdown in meine Form einbauen. Dieser soll die Systemzeit errechnen, berechnen wie lange es von der Systemzeit noch bis 10:00 Uhr dauert und die Restzeit fortlaufend in deinem Label anzeigen. Wie geht das?

Was davon weißt du denn schon? Fang einfach mal mit dem groben Ansatz an, wie hast du dir es denn gedacht? Die Systemzeit bekommst du auf jeden Fall mit now. Da solltest du in der Delphi Hilfe schon ein wenig zu finden. Wenn du hier schaust, wirst du auch Funktionen finden, die dir die Systemzeit in Stunden, Minuten und Sekunden umrechnet (decodeTime).
Mit der aktuellen Uhrzeit sollte es ja leicht möglich sein, die Zeit bis 10:00 Uhr zu berechnen. Diese Differenz kannst du (z.B. mit einem Timer) jede Sekunde um einen konstanten Wert anpassen und die verbleibende Zeit anzeigen.

Gruß Der Unwissende

Balu der Bär 3. Dez 2006 16:23

Re: Countdown der auf Now Zeit zurück greift
 
Eventuell dazu einfach Delphi-Referenz durchsuchenHoursBetween, Delphi-Referenz durchsuchenMinutesBetween und Delphi-Referenz durchsuchenSecondsBetween.

Darkchild 7. Dez 2006 07:53

Re: Countdown der auf Now Zeit zurück greift
 
Mahlzeit,

also wie schon oben erwähnt bekommst du über now die aktuelle zeit z.B. so

Delphi-Quellcode:
Procedure TfrmFrom1.getTimebuttonclick()
var
aktuelleZeit:DateTime;
begin
aktuelleZeit := (now);
end;
So ungefähr und Du hast dann in der Variablen AktuelleZeit die gerade zu dem Zeitpunkt aktuelle Zeit drin stehen.
Dann noch ein edit Feld oder so in dem Du die zu Erreichende Zeit eingibst und diese beiden Zeiten kannst du dann an die Funktionen übergeben die schon genannt wurden wie z.B. MinutesBetween, aber um diese zu verwenden musst Du in den Uses die DateUtils eintragen, ansonsten klappt das nicht.

Und wenn Du dann den errechneten Wert zurückbekommen hast kannst Du z.B. den Timer benutzen und statt immer 1 sekunde drauf addieren zu lassen, wird eine abgezogen und bei erreichen von null ein hübscher Sound abgespielt, oder was auch immer Dir dazu einfällt, aber so in etwa würde ich es machen.

Gruss
Darkchild

oldmax 7. Dez 2006 09:37

Re: Countdown der auf Now Zeit zurück greift
 
Hi
so geht's auch. Hier mal ein kleiner Test von mir:
Ich habe mal 3 Editfelder und einen Timer auf eine Form gezogen und eine globale Variablen deklariert:

Delphi-Quellcode:
Differenzzeit :TTime;
In edit1.Text habe ich '10:00:00' eingetragen= Morgends um 10 ist die Welt....

In Create die Zeit initialisieren
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit1.Text:='10:00:00'; //Morgends um 10 ist die Welt....
   Edit2.Text:=FormatDateTime('hh:nn:ss',time );//Aktuelle Zeit
   Differenzzeit :=strToTime(Edit2.Text)-Time;
   Edit3.Text:=FormatDateTime('hh:nn:ss',Differenzzeit );// der CountDown läuft..
end;
und im Timer berechnen und visualisieren....

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Edit2.Text:=FormatDateTime('hh:nn:ss',time );//Aktuelle Zeit
   Differenzzeit :=strToTime(Edit1.Text)-Time;
   Edit3.Text:=FormatDateTime('hh:nn:ss',Differenzzeit );// der CountDown läuft..

   if Differenzzeit <0 then Timer1.Enabled:=False
end;
Gruß oldmax

oldmax 7. Dez 2006 10:42

Re: Countdown der auf Now Zeit zurück greift
 
Hi
Hab grad nochmal die Überschrift gelesen und hab da noch eine Bemerkung zu
Die Now-Zeit beinhaltet Datum und Zeit und ist vom Typ TDateTime. Natürlich kann man die auch einsetzen und muß man sogar, wenn man Datumsübergreifend arbeiten will. wenn es allerdings nur um die Zeit geht, also ohne Datumswechsel, dann reicht Time vom Typ TTime.
Ist noch jemand, dem ich bei der Verwirrung helfen kann ? :wink:
Gruß oldmax

TeronG 7. Dez 2006 10:50

Re: Countdown der auf Now Zeit zurück greift
 
Zitat:

Zitat von oldmax
Ist noch jemand, dem ich bei der Verwirrung helfen kann ? :wink:

Klar .. mir
in der System.Pas bzw. Controls.pas steht:
Delphi-Quellcode:
 
TDateTime = type Double;
TDate = type TDateTime;
TTime = type TDateTime;
Warum ist den dann TTime besser als TDateTime? :gruebel:

oldmax 7. Dez 2006 12:56

Re: Countdown der auf Now Zeit zurück greift
 
Hi
Tja.... :shock: hab grad mal in der Hilfe nachgesehen, du hast recht. Aber die endgültige Verwirrung bringt dann der Text, das ein TDate nur den Datumsanteil liefert, ohne den Kommateil. ? Trotzdem aber ein TDateTime-Typ ist ? :gruebel:
Ach, ich machs wie immer, ich probier und wenn's funnzt, was soll diese Pingeligkeit
Also, nur zum Verständnis, im Prinzip ist ein TDatetime eine Realzahl. Die Zahlen vorm Komma sind die Tage seit denm 31.12.1899 und die Zahlen hinter dem Komma die Millisekunden ab Mitternacht...
Daran halte ich mich immer, und mit Formatdatetime kann ich halt entsprechend leicht in jeder beliebigen Form ein Datum oder eine Zeit ausgeben. Nun ja, ich quäle mich auch mit Delphi 3 und 4 rum.... wo noch nix mit irgendwas ..Between is.
Gruß oldmax

TeronG 7. Dez 2006 15:37

Re: Countdown der auf Now Zeit zurück greift
 
Naja zumindest dint es (evtl.) der Übersichtlichkeit ... so kann man sehen was man in der Variabel speichrn wollte ..

Zitat:

Zitat von oldmax
die Zahlen hinter dem Komma die Millisekunden ab Mitternacht...

naja ... eigentlich sind es doch imho KommaTage oder?

DerDelphi 15. Jan 2007 17:45

Re: Countdown der auf Now Zeit zurück greift
 
Also ich habe auch ein ZeitProblem ( Wer hat das nicht :lol: )

Ich fülle beide edit Boxen im Format '16.32.12' dann die Berechnung : (Ich geh von 2sek unterschied aus) Das Ergebnis benötige ich Minuten

zeit:=MinuteSpan(strtotime(edit4.text),strtotime(e dit3.text));
zeit:=0,033333333333333 Periode
Berechnung stimmt also

nur beim anzeigen :
edit1.text:=FormatDateTime('hh:nn:ss',zeit );//Aktuelle Zeit;
oder
edit1.Text:=timetostr(zeit);

bekomme ich als Ergebnis 48 oder 4800 oder das Format '00:48:00' raus.
Ich habe absolut keine Ahnung warum ??


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 by Thomas Breitkreuz