[Code] [Delphi]"Countdown" zu vordefinierter Zeit

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von mZet_, 9. Juni 2009 .

Schlagworte:
  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^^
     
  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
     
  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
     
  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
     
  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
     
  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?
     
  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;
     
  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 :>
     
  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
     
  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
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.