![]() |
uhr mit TTimer
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 :D |
AW: uhr mit TTimer
Delphi-Quellcode:
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:
min:= min+1;
label1.Caption:= inttostr(std) + ':'+ inttostr(min) +':'+ inttostr(sec);
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; |
AW: uhr mit TTimer
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; |
AW: uhr mit TTimer
PS: Deine Sekunden laufen von 1 bis 60 und nicht von 0 bis 59 :wink:
|
AW: uhr mit TTimer
Zitat:
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 :) |
AW: uhr mit TTimer
Zitat:
59 + 1 = 60 :zwinker:
Delphi-Quellcode:
sieht blöd aus, aber andersrum klappt es mit der 60 wieder
if sec < 59 then
sec := sec+1 else begin sec := 1; min := min + 1; end;
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.) |
AW: uhr mit TTimer
Zitat:
|
AW: uhr mit TTimer
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 :angle2:
|
AW: uhr mit TTimer
Hm... Also, wenn ich die Aufgabenstellung jetzt nicht ganz falsch verstanden habe:
Delphi-Quellcode:
Das ist fuer mich 'ne Uhr, die ich mit TTimer umgesetzt habe.
procedure TForm1.Timer1Timer(Sender: TObject);
begin label1.Caption := TimeToStr(Now()); end; Wozu irgendwas rechnen? :confused: Gruesse, N1ls |
AW: uhr mit TTimer
thx
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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-2025 by Thomas Breitkreuz