AGB  ·  Datenschutz  ·  Impressum  







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

eine Uhr

Ein Thema von Förstli · begonnen am 20. Okt 2005 · letzter Beitrag vom 24. Okt 2008
Antwort Antwort
Seite 1 von 3  1 23      
Förstli

Registriert seit: 20. Okt 2005
3 Beiträge
 
#1

eine Uhr

  Alt 20. Okt 2005, 13:38
Also ich bin einer von vielen, der Info in der Schule hat und mit Delphi proggt. Wir benutzen natürlich noch mSuM, hab das Fach auch erst seit 2 Monaten.

Jetzt sollen wir eine Uhr proggen, mit Zifferblatt, Sekunden, Minuten und Stundenzeiger.. Also Zifferblatt und Sekundenzeiger sind soweit kein Problem, nur komm ich mit den anderen beiden zeigern nicht klar. Alle Versuche sind gescheitert, kann mir da jemand helfen? Zumindest welche Schleife ich einbauen muss? Kenn mich damit überhaupt nicht aus ^^

Delphi-Quellcode:
program pUhr;



uses
  mSuM;

var zackBildschirm:Bildschirm;
    zackStift:Buntstift;
    zackMaus:Maus;
    lauf:ganzezahl;

    begin

    //Objekte erzeugen
    zackBildschirm:=Bildschirm.init;
    zackStift:=Buntstift.init;
    zackMaus:=Maus.init;

    //Objekte benutzen

    //Kreis
    zackStift.bewegeBis(zackBildschirm.breite DIV 2,zackBildschirm.hoehe DIV 2);
    zackStift.zeichneKreis(zackBildschirm.breite DIV 4);

    //5min Striche
    for lauf:=1 to 12 do
    begin
    zackStift.setzeLinienBreite(2);
    zackStift.bewegeUm((zackBildschirm.breite DIV 4)-30);
    zackStift.runter;
    zackStift.bewegeUm(30);
    zackStift.hoch;
    zackStift.bewegeBis(zackBildschirm.breite DIV 2,zackBildschirm.hoehe DIV 2);
    zackStift.dreheUm(30);
    end;

    //1min Striche
    for lauf:=1 to 60 do
    begin
    zackStift.setzeLinienBreite(1);
    zackStift.bewegeUm((zackBildschirm.breite DIV 4)-15);
    zackStift.runter;
    zackStift.bewegeUm(15);
    zackStift.hoch;
    zackStift.bewegeBis(zackBildschirm.breite DIV 2,zackBildschirm.hoehe DIV 2);
    zackStift.dreheUm(-6);
    end;

    //Sekundenzeiger
    zackStift.dreheBis(96);
    repeat
    for lauf:=1 to 59 do
    zackStift.bewegeBis(zackBildschirm.breite DIV 2,zackBildschirm.hoehe DIV 2);
    zackStift.radiere;
    zackStift.bewegeUm((zackBildschirm.breite DIV 4)-40);
    zackStift.dreheUm(-6);

    zackStift.bewegeBis(zackBildschirm.breite DIV 2,zackBildschirm.hoehe DIV 2);
    zackStift.normal;
    zackStift.runter;
    zackStift.bewegeUm((zackBildschirm.breite DIV 4)-40);
    warte(1000);

    //Minutenzeiger

    until zackMaus.doppelklick;



    zackBildschirm.gibFrei;
    zackStift.gibFrei;
    zackMaus.gibFrei;
end.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#2

Re: eine Uhr

  Alt 20. Okt 2005, 19:22
Zitat von Förstli:
Wir benutzen natürlich noch mSuM
Was ..äh.. ist das genau?
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#3

Re: eine Uhr

  Alt 20. Okt 2005, 19:26
Zitat von Daniel G:
Zitat von Förstli:
Wir benutzen natürlich noch mSuM
Was ..äh.. ist das genau?
Das hatte hier doch schonmal hier irgendwer. Wenn ich mich recht erinnere war das ne eingedeutschte Kapselung von TCanvas. Sehr strange...

*edit* Der Beispielcode sieht aus als hätte ich recht. .bewegeUm, .bewegeBis...
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#4

Re: eine Uhr

  Alt 20. Okt 2005, 19:27
Die Unit heisst "Mein Stift und Maus" und vereinfacht Canvas Befehle und stellt sie auf Deutsch zur Verfügung.
Ich finde das lächerlich, dass man sowas in der Schule benutzt und es nicht gleich richtig lernt
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Palando

Registriert seit: 5. Mai 2005
72 Beiträge
 
#5

Re: eine Uhr

  Alt 20. Okt 2005, 19:38
Und welchen Vorteil genau soll es haben, die eingedeutschten Begriffe zu lernen nur um die dann wieder vergessen zu können und die richtigen lernen zu müssen, wenn man anfängt "richtig" zu programmieren?
Markus
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: eine Uhr

  Alt 20. Okt 2005, 19:42
Vielen Dank,

meine Frage ist geklärt. Ich denke, wir sollten zum eigentlichen Thema zurückkehren und Förstli bei seinem "Problemli" helfen.
  Mit Zitat antworten Zitat
Förstli

Registriert seit: 20. Okt 2005
3 Beiträge
 
#7

Re: eine Uhr

  Alt 20. Okt 2005, 20:13
jo wollte ich gerade sagen, tut doch nichts zur sache, hab hier viele themen über mSuM gesehen, dachte das wär klar. was'n jetzt mit meinem problem?
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#8

Re: eine Uhr

  Alt 20. Okt 2005, 21:05
HiHo,

wenn ich das recht sehe, könntest du Schleifen verschachteln.
Delphi-Quellcode:
For min := 0 to 59 do
  Begin
  For sec := 0 to 59 do
    Begin
    Sekundenzeiger.Bewege;
    Sleep(1000);
    blablabla...
    End;
  Minutenzeiger.Bewege;
  End;
Mit einer weiteren Schleife ließe sich dann der Stundenzeiger realisieren. Das Problem wird sein, dass dein Programm damit vollauf ausgelastet ist. Ich lege dir daher die Komponente TTimer (findet sich in der Rubrik "System") nahe. Im OI kannst du dort auch ein Intervall einstellen, und es gibt das OnTimer-Event. (Also sowas wie ein ButtonClick, nur von der Uhr gesteuert.) Mit drei Timern (einfach auf dem Formular plazieren, und untersch. Intervalle einstellen) kannst du ganz leicht die Sekunden-, Minuten- und Stundenzeiger weiterrücken lassen (Wobei das Weiterrücken des Sekundenzeigers im OnTimer-Event des 1000ms-Timers realisiert wird, das Weiterrücken des Minutenzeigers bei OnTimer des 60000ms-Timers und so weiter, und so weiter).

Das Tolle dabei ist: Dein Programm wird auf Mausklicks reagieren können, weil der Nachrichtenstapel von Windows abgearbeitet wird.
Das Doofe dabei ist: Für richtige Zeit -messungen oder -anzeigen ist TTimer nicht wirklich präzise genug.

Verbesserungen könntest du dann noch machen, indem du dir per Time die richtige Zeit besorgst. (Aber da die Funktion ja in Englisch ist, dürft ihr sie wahrscheinlich noch nicht benutzen. )

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Palando

Registriert seit: 5. Mai 2005
72 Beiträge
 
#9

Re: eine Uhr

  Alt 20. Okt 2005, 21:42
Zitat von hanselmansel:
Das Tolle dabei ist: Dein Programm wird auf Mausklicks reagieren können, weil der Nachrichtenstapel von Windows abgearbeitet wird.
Das Doofe dabei ist: Für richtige Zeit -messungen oder -anzeigen ist TTimer nicht wirklich präzise genug.

Das kannst du allerdings auch erreichen, indem du die Sleep-Funktion der For-Schleifen einfach durch Delay ersetzt.

Aber momennt - darf er das? :/
Markus
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: eine Uhr

  Alt 21. Okt 2005, 10:09
Wahrscheinlich müsste er die funktion umbennenen, also statt Warte (= Sleep) sowas wie WarteOhneEinzufrieren() ^^

Aber ich glaube, Timer sind hier die bessere Lösung, und sekundengenau sind sie allemal

evtl. aber doch lieber TStoppUhr = TTimer ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:48 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