AGB  ·  Datenschutz  ·  Impressum  







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

Timer-Problem

Ein Thema von Tommy1988 · begonnen am 19. Jul 2008 · letzter Beitrag vom 20. Jul 2008
Antwort Antwort
Tommy1988
(Gast)

n/a Beiträge
 
#1

Timer-Problem

  Alt 19. Jul 2008, 10:08
Ich habe da ein kleines problem mit einem Timer.

Undzwar läuft eine Zeit herunter, wenn diese "10" sekunden restzeit hat passiert folgendes:
Delphi-Quellcode:

if iMins + iSecs = 10 then // iMins und iSecs enthält bei 00:02:20 z.b. zusammen: 140. (2* 60 Sek + 20)
begin
 S := '00:00:00';
 UpdateList;
end;
end;
iMins + iSecs ist im Format 00:00:00 in einem Label gespeichert, welches sich dann eigentlich "erneuern" sollte.
Manchmal tut es ds aber nicht (das ist nicht das Problem) => das Problem ist eher, dass der Timer dann "hoch-zählt". Wie kann ich das abfangen?

Edit// nurnochmal zur ausführlichen Erklärung:
LabelX wird mit der aktuellen uhrzeit vergleichen und der Zeitraum dazwischen ist das interval des Timers.
"normal" ändert sich das Label mit der Uhrzeit alle Paar Minuten, manchmal jedoch nicht, und dann ist der Zeitraum von 12:00:00 (jetzt) und dem Label 11:55:00 ungleich, deswegen zählt der ja hoch.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Timer-Problem

  Alt 19. Jul 2008, 10:20
Sorry, ich habe nix verstanden, von dem was du geschrieben hast...

Was willst du eigentlich machen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.559 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Timer-Problem

  Alt 19. Jul 2008, 10:20
Ganz verstanden habe ich es zwar nicht, aber Du solltest zum Einen die Logik von der Darstellung trennen ("in einem Label gespeichert"... *brrr*) und zum Zweiten keinen direkten Vergleich machen, sondern nachsehen, ob die Untergrenze unterschritten wurde, d.h. nicht auf Gleichheit, sondern auf kleiner/größer (je nach Logik) oder gleich abfragen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#4

Re: Timer-Problem

  Alt 19. Jul 2008, 11:12
"d.h. nicht auf Gleichheit, sondern auf kleiner/größer"

Ok, ich habe es jetzt so gelöst.
Die Aktuelle Uhrzeit im Format HH:MM:SS habe ich folgendermaßen in eine Integer-Variable geladen:
HHMMSS.

Die Ziel-Uhrzeit habe ich genau so in eine Integer-Variable gepackt.

Dann vergleiche ich so:
Delphi-Quellcode:
if StrToInt(timeComplNow) > StrToInt(timeComplThen) then // nicht >=
 begin
  UpdateList;
  SetColour;
 end;
Ich kenne die Regeln der Programmierung nicht genau, aber ist das in Ordnung so?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.559 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Timer-Problem

  Alt 19. Jul 2008, 11:14
Das sieht mir etwas umständlich aus. Kannst Du noch einmal genauer beschreiben, was Du genau machen möchtest?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#6

Re: Timer-Problem

  Alt 19. Jul 2008, 11:28
Ok.

Auf meinem Forumla läuft oben rechts die aktuelle Uhrzeit an.

Etwas weiter unten, in einer Liste, steht eine Zeit in der Zukunft.

Etwa so könnte man es verdeutlichen:
Delphi-Quellcode:
---------------------
| 12:24:00 | // Jetzt
| |
| |
| |
| 12:26:00 | // Später
|Noch 00:02:00 Min | // Restzeit
---------------------
So, ist die Jetztige Zeit größer als die Zeit in der Zukunft, zählte der Timer eben noch hoch.

Was ich aber durch meinen letzten Post gelöst hatte.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Timer-Problem

  Alt 19. Jul 2008, 11:43
Du willst also die Zeit im Sekundentakt oben im formular hochlaufen lassen, bis es 12:26 ist, wie sie unten in der Liste steht. Dann hätt ich jetzt mal dein Problem verstanden, oder?

Zeiten (und Datum) speichert man in Delphi in TDateTime Typen, dazu brauchst du also nicht umständlich irgendwelche Strings auseinande zu pflücken oder Stunden und Minuten zu extrahieren.

Ich würde 2 Properties definieren, welche deine beiden Zeiten beinhalten (Jetzt und BisZeit). In der Setter-Methode kannst du z.B. deine Darstellung aktualiseren. Somit brauchst du nirgends, ausser in der Setter-Methode, deine Labels anzufassen, und arbeitest ausschliesslich mit deinen Eigenschaften.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    lblJetzt: TLabel;
    lblBisZeit: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    FJetzt: TDateTime;
    FBisZeit: TDateTime;
    procedure SetJetzt(const Value: TDateTime);
    procedure SetBisZeit(const Value: TDateTime);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    property Jetzt : TDateTime read FJetzt write SetJetzt;
    property BisZeit : TDateTime read FBisZeit write SetBisZeit;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }



procedure TForm1.FormCreate(Sender: TObject);
begin
     Jetzt := Now ;
     BisZeit := Jetzt + EncodeTime(0,0,5,0);
     timer1.Enabled := true;
end;

procedure TForm1.SetBisZeit(const Value: TDateTime);
begin
  FBisZeit := Value;
  lblBisZeit.Caption := TimeToStr(FBisZeit) ;
end;

procedure TForm1.SetJetzt(const Value: TDateTime);
begin
  FJetzt := Value;
  lblJetzt.Caption := TimeToStr(FJetzt) ;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     Jetzt := Now ;
     if (Jetzt >= BisZeit) then begin
         timer1.Enabled := false;
         ShowMessage ('Countdown abgelaufen') ;
     end;

end;

end.
Angehängte Dateien
Dateityp: zip timer_681.zip (233,5 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#8

Re: Timer-Problem

  Alt 19. Jul 2008, 12:32
" Du willst also die Zeit im Sekundentakt oben im formular hochlaufen lassen, bis es 12:26 ist, wie sie unten in der Liste steht. Dann hätt ich jetzt mal dein Problem verstanden, oder? "


Ne

Ich will nur die Zeit die OBEN steht mit der unten vergeichen Das klappt ja auch.

Das Problem war halt nur, dass wenn die Zeit oben über der Zeit unten war, der Timer (welcher eigentlich ein Countdown ist hoch statt runtergezähl hat.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#9

Re: Timer-Problem

  Alt 19. Jul 2008, 15:09
Zitat von Tommy1988:
Ich habe da ein kleines problem mit einem Timer.

Undzwar läuft eine Zeit herunter, wenn diese "10" sekunden restzeit hat passiert folgendes:
Delphi-Quellcode:

if iMins + iSecs = 10 then // iMins und iSecs enthält bei 00:02:20 z.b. zusammen: 140. (2* 60 Sek + 20)
Hallo,

iMins + iSecs = 10 gilt auch für 10 min 0 sec, oder 9 min 1 sec ... = krasser Logikfehler.

Gruss Reinhard
  Mit Zitat antworten Zitat
Tommy1988
(Gast)

n/a Beiträge
 
#10

Re: Timer-Problem

  Alt 20. Jul 2008, 11:12
Zitat:
krasser Logikfehler.
Ich habs inzwischen geändert und das problem wurde behoben!
  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 22:30 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