Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeigerbewegungen einer Uhr darstellen (https://www.delphipraxis.net/13260-zeigerbewegungen-einer-uhr-darstellen.html)

Martha 15. Dez 2003 09:09


Zeigerbewegungen einer Uhr darstellen
 
Ich soll eine analoge Uhr programmieren.
Kann mir jemand bei der Umsetzung helfen?
Ich habe mir schon Gedanken gemacht, das ja die Zeiger immer vom Mittelpunkt ausgehen und dann einen Endpunkt brauchen mit X- und Y-Koordinaten. Kann man die irgendwie berechnen, mit dem Kreisumfang oder so? Wie schafft man es den Start der Uhr auf die aktuelle Uhrzeit bezogen zu timen???

choose 15. Dez 2003 09:17

Re: Zeigerbewegungen einer Uhr darstellen
 
Hallo Martha,

die Lösung für die Koordinaten solltest Du unter den trigonometrischen Funktionen in Deinem Mathebuch finden. Tipp: Du befindest Dich in einem karthesischen Koordinatensystem, ein Dreieck mit den Eckpunkten (0,0), (x,0), (x,y) hat demnach für x<>0 bei (x,0) immer einen rechten Winkel...

Die aktuelle Systemzeit kannst Du mit der Funktion Now ermitteln. Sieh einmal in der Delphi Online-hilfe (OH) nach.

Smokey 15. Dez 2003 09:31

Re: Zeigerbewegungen einer Uhr darstellen
 
Aus meinem Delphibuch:
Eine Form mit Timerkomponente ist alles was man braucht

1. Funktion zur Winkelberechnung:

Delphi-Quellcode:
procedure TForm1.Berechne_xy(winkel: Real; var xi,yi: Integer);
var x,z: real;
Begin
(*Winkel korrigieren um Viertelkreis zurück*)
   winkel := winkel - pi/2;
   
  (*Koordinaten berechnen*)
   x:=Cos(Winkel);
   y:=Sin(Winkel);
   x:= x* (Width div 3);
   y:= y* (Height div 3);
   
   x:= x + (Width div 2);
   y:= y + (Height div 2);  
   
   xi:= Trunc(x);
   yi:= Trunc(y);
end;

Timerroutine :

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var winkel: Integer
    hour, min, sec, msec: Word;
    x,y: Integer;
begin
   Refresh;
   DecodeTime(Now, hour, min, sec, msec);
   (*Sekundenzeiger*)
   Berechne_xy(((2*pi)/60)*sec, x, y);
   Canvas.MoveTo(Width div 2, Height div 2);
   Canvas.LineTo(x,y);
 
   (*Minutenzeiger*)
   Berechne_xy(((2*pi)/60)*min, x, y);
   Canvas.MoveTo(Width div 2, Height div 2);
   Canvas.LineTo(x,y);
   
   (*Stundenzeiger*)
   if hour > 12 then
      hour := hour - 12;
   Berechne_xy(((2*pi)/12)*hour, x, y);
   Canvas.MoveTo(Width div 2, Height div 2);
   Canvas.LineTo(x,y);

end;

Wie gesagt aus meinem Delphibuch.. ich übernehme keine verantwortung *g*

mfg
smk

Martha 16. Dez 2003 18:05

Re: Zeigerbewegungen einer Uhr darstellen
 
Hi Smockey!
Vielen Dank für deinen Quellcode. Leider funzt der bei mir irgendwie nicht.
Das Problem: [Fehler] Unit1.pas(47): Ungültige Compileranweisung: 'hour'
Hat jemand eine Ahnung, was ich da machen muss? Ich verschicke das Programm auch, wenn ich das allein nicht hinbekomme!

:thuimb: Vielen, vielen Dank für die bisherige Hilfe! Es hat mir wirklich schon sehr viel weiter geholfen! :coder:

mirage228 16. Dez 2003 18:19

Re: Zeigerbewegungen einer Uhr darstellen
 
Hallo Martha,

Zitat:

Zitat von Smokey
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var winkel: Integer; // <--- hier fehlte das Semikolon
    hour, min, sec, msec: Word;
    x,y: Integer;
begin
 // ...
end;

ich glaub da fehlte einfach ein Semikolon.

mfG
mirage228

Martha 16. Dez 2003 20:27

Re: Zeigerbewegungen einer Uhr darstellen
 
Danke Mirage228! Das war tatsächlich der Fehler! Dass ich da nicht selbst drauf gekommen bin... :wink:

Hi Smokey!
Ich muss bei meinem Projekt auch Quellen angeben. Kannst du mir ma bitte den Buchtitel, Autor und Verlag von deinem Delphi-Buch geben???

Martha 17. Dez 2003 15:07

Re: Zeigerbewegungen einer Uhr darstellen
 
Ich habe nun ein weiteres Problem: Ich muss meine digitale und analoge Uhr per Veerbung von Klassen darstellen, kann mir da jemand helfen?
2. Frage: Kann jemand versuchen, mir mal den Quellcode von den Zeigerbewegungen im Detail zu erklären für meine Präsentation?
Danke schon mal im Voraus! 8)

Luckie 17. Dez 2003 15:17

Re: Zeigerbewegungen einer Uhr darstellen
 
Für eine neue Frage, erstell bitte einen neunen Thread, danke.

Smokey 17. Dez 2003 15:49

Re: Zeigerbewegungen einer Uhr darstellen
 
Hu, hier die Buchdaten:

Buchtitel: Jetzt lerne ich Delphi

Verlag: Markt + Technik

Autor: Thomas Binziger

mfg
Smk

ballerino 22. Apr 2007 17:54

Re: Zeigerbewegungen einer Uhr darstellen
 
sorry wenn das jetzt eine dumme Frage ist, aber was für ein Befehl ist denn
berechne_xy ???? Ich arbeite (und das nicht freilwillig ) mit Delphi 5...vielleicht kann ich deswegen nichts damit anfangen? wäre toll wenn mir jemand weiterhelfen könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr.
Seite 1 von 2  1 2      

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