AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Countdown mit Stunden/Minuten

Ein Thema von jacky213 · begonnen am 5. Jun 2019 · letzter Beitrag vom 7. Jun 2019
Antwort Antwort
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#1

Countdown mit Stunden/Minuten

  Alt 5. Jun 2019, 22:00
Moin,

Ich habe ein Panel mit einer Startzeit von ca. 35 Stunden und 15 Minuten. In der Caption steht also 30:15 und ich möchte nun damit einen Countdown realisieren der immer 1 Minute von dieser Zeit abzieht und auf dem Panel ausgibt.

Wenn ich aber mit StrToTime und EncodeTime arbeiten möchte bekomme ich die Fehlermeldung das es sich bei 30:15 nicht um eine korrekte Zeitangabe handelt. Das liegt wohl daran das 30 Stunden über dem Standart von 24 Stunden liegt. Wie kann ich das ganze trotzdem realisieren?
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
654 Beiträge
 
Delphi 12 Athens
 
#2

AW: Countdown mit Stunden/Minuten

  Alt 5. Jun 2019, 22:06
Moin,

Ich habe ein Panel mit einer Startzeit von ca. 35 Stunden und 15 Minuten. In der Caption steht also 30:15 und ich möchte nun damit einen Countdown realisieren der immer 1 Minute von dieser Zeit abzieht und auf dem Panel ausgibt.

Wenn ich aber mit StrToTime und EncodeTime arbeiten möchte bekomme ich die Fehlermeldung das es sich bei 30:15 nicht um eine korrekte Zeitangabe handelt. Das liegt wohl daran das 30 Stunden über dem Standart von 24 Stunden liegt. Wie kann ich das ganze trotzdem realisieren?
Wie wäre es mit zwei Integer Zahlen und einer einfachen Logik?
Roland
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Countdown mit Stunden/Minuten

  Alt 5. Jun 2019, 22:33
Vor dem Start des Timers die „Endzeit“ mittels IncMinute berechnen.

Im Timer dann Minutesbetween(now, Endzeit) und damit Stunden und Minuten entsprechend berechnen...

Wie blawen vorgeschlagen für Stunden und Minuten Integer-Werte zum rechnen nehmen...
Michael Kübler
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.932 Beiträge
 
Delphi 12 Athens
 
#4

AW: Countdown mit Stunden/Minuten

  Alt 6. Jun 2019, 06:54
Das hier "scandatetime" könnte dir vielleicht helfen, oder Du zerlegst die Elemente eben schnell selber.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#5

AW: Countdown mit Stunden/Minuten

  Alt 6. Jun 2019, 08:33
Hier ein dreckiges Beispiel
Delphi-Quellcode:
uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  System.TimeSpan,
  System.Diagnostics,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  Vcl.StdCtrls,
  Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    FDuration: TTimeSpan;
    FStopwatch: TStopwatch;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ParseCountdownTime(const s: string): TTimeSpan;
var
  parts: TArray<string>;
  Hours, Minutes: Integer;
begin
  parts := s.Split([':']);
  if Length(parts) <> 2 then
    raise EArgumentException.Create('Fehlermeldung');

  if not Integer.TryParse(parts[0], Hours) then
    raise EArgumentException.Create('Fehlermeldung');
  if (Hours < 0) then
    raise EArgumentException.Create('Fehlermeldung');

  if not Integer.TryParse(parts[1], Minutes) then
    raise EArgumentException.Create('Fehlermeldung');
  if (Minutes < 0) or (Minutes >= 60) then
    raise EArgumentException.Create('Fehlermeldung');

  Result := TTimeSpan.Create(Hours, Minutes, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FDuration := ParseCountdownTime(Edit1.Text);
  FStopwatch := TStopwatch.StartNew();
  Edit1.ReadOnly := True;
  Button1.Enabled := False;
  Button2.Enabled := True;
  Timer1.Enabled := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  Button2.Enabled := False;
  Button1.Enabled := True;
  Edit1.ReadOnly := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  remain: TTimeSpan;
  Hours, Minutes: Integer;
begin
  remain := FDuration - FStopwatch.Elapsed;
  Hours := Trunc(remain.TotalHours);
  Minutes := remain.Minutes;
  if remain.Seconds > 0 then
    Inc(Minutes);
  Edit1.Text := string.Format('%d:%2.2d', [Hours, Minutes]);
end;
  Mit Zitat antworten Zitat
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#6

AW: Countdown mit Stunden/Minuten

  Alt 6. Jun 2019, 19:24
Also ich danke nochmal Herzlich für die Tipps.

Ich habe es so eingestellt das ich jeweils Eine Minute zum Countdown Hinzufügen oder Abziehen kann.


Delphi-Quellcode:
function ASMinute(TimeStr:String; PM:Integer) : String;
var
Stunden, Minuten : Integer;
begin
Stunden := StrToInt(Copy(TimeStr,0,Pos(':',TimeStr)-1));
Minuten := StrToInt(Copy(TimeStr,Pos(':',TimeStr)+1,TimeStr.Length));
case PM of
   0 : if not (Minuten=0) then Minuten := Minuten - 1 else
       if not (Stunden=0) then
          begin
          Stunden := Stunden - 1;
          Minuten := 59;
          end;
   1 : if not (Minuten=59) then Minuten := Minuten + 1 else
          begin
          Stunden := Stunden + 1;
          Minuten := 0;
          end;
   end;
result := string.Format('%d:%2.2d', [Stunden, Minuten]);
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:31 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