AGB  ·  Datenschutz  ·  Impressum  







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

uhr mit TTimer

Ein Thema von hamster1989 · begonnen am 3. Sep 2011 · letzter Beitrag vom 4. Sep 2011
Antwort Antwort
hamster1989

Registriert seit: 3. Sep 2011
Ort: Saerbeck
3 Beiträge
 
Delphi 6 Personal
 
#1

uhr mit TTimer

  Alt 3. Sep 2011, 23:17
hallo, ich hoffe die Kategorie passt bin mir aber nicht sicher da die meisten Themen und Begriffe mir nicht viel sagen da ich Programmieranfänger bin. Jedenfalls hab ich bei meiner Uhr das Problem, dass jedesmal wenn die sekunde einen vorspringt die Minute dasselbe tut.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);

begin
 if sec < 60 then
   sec:= sec+1
 else
   sec:= 1;
   min:= min+1;
   label1.Caption:= inttostr(std) + ':'+ inttostr(min) +':'+ inttostr(sec);
end;

ansonsten suche ich noch die Postingregeln vom Forum die habe ich leider auch nicht gefunden.

ich bin für jeden tipp dankbar
  Mit Zitat antworten Zitat
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: uhr mit TTimer

  Alt 3. Sep 2011, 23:21
Delphi-Quellcode:
   min:= min+1;
   label1.Caption:= inttostr(std) + ':'+ inttostr(min) +':'+ inttostr(sec);
Der Code wird immer ausgeführt, da hinter der Alternativbedingung else kein begin ... end; folgt. D.h. nach dem else wird nur sec := 1 ausgeführt, danach ist die ganze if-Bedingungen abgearbeitet und der Code danach wird immer ausgeführt. ALso:

Delphi-Quellcode:
begin
 if sec < 60 then
   sec:= sec+1
 else
   begin
     sec:= 1;
     min:= min+1;
     label1.Caption:= inttostr(std) + ':'+ inttostr(min) +':'+ inttostr(sec);
   end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: uhr mit TTimer

  Alt 3. Sep 2011, 23:22
Quelltext ordentlich und sachlich richtig formatieren zeigt den Fehler:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

  if sec < 60
  then
    sec := sec+1
  else
    sec := 1;

  min := min + 1;
  Labellabel1.Caption:= inttostr( std ) + ':' + inttostr( min ) + ':' + inttostr( sec );

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: uhr mit TTimer

  Alt 3. Sep 2011, 23:56
PS: Deine Sekunden laufen von 1 bis 60 und nicht von 0 bis 59
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: uhr mit TTimer

  Alt 3. Sep 2011, 23:57
PS: Deine Sekunden laufen von 1 bis 60 und nicht von 0 bis 59
Nö, weder noch die laufen von 1 bis 59

Auch sollte man über einen Timer (auch wenn der auf 1000ms steht) nicht die Zeit messen, denn Windows ist kein Echtzeit-BS. Das Intervall gibt an, das so etwa nach 1000ms, wenn denn Zeit dafür da ist, dieses Event gefeuert wird.

Also beim Start die aktuelle Uhrzeit merken (now) und dann im Timer-Event diesen Wert immer von der aktuellen Uhrzeit subtrahieren.
Mit FormatDateTime kann dann auch sehr schön die Ausgabe erfolgen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 4. Sep 2011 um 00:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: uhr mit TTimer

  Alt 4. Sep 2011, 00:05
Zitat:
Delphi-Quellcode:
 if sec < 60
  then
    sec := sec+1
<60 = maximal 59
59 + 1 = 60


Delphi-Quellcode:
  if sec < 59 then
    sec := sec+1
  else begin
    sec := 1;
    min := min + 1;
  end;
sieht blöd aus, aber andersrum klappt es mit der 60 wieder

Delphi-Quellcode:
  if sec >= 60 then begin
    sec := 0;
    Inc(min);
  end else
    Inc(sec);


Und selbst mit einer mieserablen Codeformatierung hätte der Debugger einem sofort den Grund aufgezeigt ... man müßte ihn nur mal verwenden.

Leherer gehören gesteinigt, da sie sowas fast nie erwähnen. (Bevor man wen an code ran läßt, gehören die Grundkenntnisse, Codeaufbau/-formatierung und Debuggen auf den Lehrplan.)
$2B or not $2B

Geändert von himitsu ( 4. Sep 2011 um 00:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: uhr mit TTimer

  Alt 4. Sep 2011, 00:08
Delphi-Quellcode:
 if sec < 60
  then
    sec := sec+1
<60 = maximal 59
59 + 1 = 60
Du bist aber auch wieder kleinlich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: uhr mit TTimer

  Alt 4. Sep 2011, 00:26
So läuft seine Uhr wenigstens im Minutentakt richtig (wenn das Begin-End dann mal stimmt) ... bei 1 bis 59 würde ja garnichts mehr stimmen
$2B or not $2B
  Mit Zitat antworten Zitat
N1ls

Registriert seit: 22. Aug 2010
1 Beiträge
 
Delphi 7 Professional
 
#9

AW: uhr mit TTimer

  Alt 4. Sep 2011, 02:18
Hm... Also, wenn ich die Aufgabenstellung jetzt nicht ganz falsch verstanden habe:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  label1.Caption := TimeToStr(Now());
end;
Das ist fuer mich 'ne Uhr, die ich mit TTimer umgesetzt habe.
Wozu irgendwas rechnen? :confused:

Gruesse,

N1ls
  Mit Zitat antworten Zitat
hamster1989

Registriert seit: 3. Sep 2011
Ort: Saerbeck
3 Beiträge
 
Delphi 6 Personal
 
#10

AW: uhr mit TTimer

  Alt 4. Sep 2011, 02:52
thx
  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 08:37 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