Re: Uhr ohne Hilfe vom "Ttimer" erstellen
Wo ist eigentlich poloroyd(TE)?
|
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
Die hat sicherlich gestern ihrem Lehrer gebeichtet, dass sie die Hausaufgaben nicht hat. Oder spontan von nem Freund kopiert. :mrgreen:
|
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@Michael
Delphi-Quellcode:
Wenn man schon ein überflüssiges goto wegposten will (in diesem Fall sogar berechtigter Weise), dann doch bitte mit Code, der erstens funktioniert und zweitens nicht unnötig kompliziert ist:
finish := not finish;
while not finish do begin // Dein Code end; Finish := not finish??????? Sollte doch hier heissen: Finish := false; Und wozu überhaupt eine unnötige Variable einführen, die an einer anderen stelle im Code deklariert werden muss und zu nichts gut ist? While true do begin .... end bzw noch einfacher repeat .... until false tuts doch genauso. |
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@Idefix: Die Variable finish kann man in der gleichen ButtonClick Prozedure deklarieren. Dann kann man mit der gleichen Schaltfläche den Vorgang auch wieder abbrechen. Bei deiner Methode ist ein Abbrechen unmöglich.
Ich habe mir dabei schon was gedacht. ;) Zitat:
|
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@hathor: Wie ich sehe muß ich hier mein Post verteidigen.
1. Zitat:
Zitat:
Zu Pascal-Zeiten hat der delay Befehl die CPU geschäftigt, heutzutage legt der sleep Befehl die CPU (für diesen Thread) schlafen, also kann sich CPU ausruhen. Die 10 Millisekunden hab ich gewählt um die Uhr nicht all zu viel nachgehen zu lassen. Bei 10 Millisekunden sind es maximal 10, wenn ich dort 100 eintrage sind es eben 100. Beides ist für den Menschen nicht erkennbar, aber man sollte doch schon schön genau sein. 2. Zitat:
3. Zitat:
Meine Uhr geht auch nach, aber der Effekt ist nicht kumulativ, und auch nur für die Berechnung des neuen Ticks. 4. Es ist eine einfache Schulaufgabe und da sollte man es auch einfach machen. Dein Quellcode kann von einem Schüler nicht stammen. Gruß David |
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@David Martens:
Was Du schreibst ist Unsinn. 1. Ich habe Deinen Code getestet, weil ich wissen wollte, ob mich mein erster Blick trügt: ich irrte mich nicht: die CPU-Temperatur geht steil nach oben! 2. Wenn ich eine genaue Uhr habe, spielt es keine Rolle, WANN ich auf die Uhr schaue: die Uhrzeit wird immer genau sein - oder verstehst Du nicht, was "Label1.Caption:= TimeToStr(now);" macht? 3. Eine Alternative zu "Goto" habe ich hinzugefügt - weil ich diese krankhafte Abneigung mancher "Programmierer" seit Jahren kenne... |
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
Delphi-Quellcode:
Heizt die CPU auf, da der Thread mit 100% CPU-Leisung ständig irgendwas brechnet, vergleicht oder ausließt.
while now - tick < 0 do ;
Delphi-Quellcode:
Läßt dagegen den Thread die meißte Zeit schlafen.
while now - tick < 0 do sleep(10);
|
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@ Hathor
Auch ohne den Code zu testen - Dein erster Blick trügt Dich. Eine statische Untersuchung des Programmcodes ist in dem Fall absolut trivial: In der while Schleife wird bei jedem Durchgang eine 10ms lange Pause eingelegt, in der die CPU nichts tut und der Programmthread still liegt. Wenn etwas deine CPU aufheizt, dann ist es sicher nicht diese Schleife. Ich gehöre nicht auch zu den Fundamentalisten, die lieber drei geschachtelte while-Schleifen mit drei Boolean Variablen und 5 Abfragen machen statt eines einfachen goto, mit dem man sich das theater spart, weil sie das goto scheuen wie der Teufel das Weihwasser. Aber bei deinem Code ist ein goto wirklich fehl am Platz, weil eine "repeat until false" oder eine "while true do" Schleife auf klarere und einfachere Art das gleiche leistet (keine Label-deklaration nötig), und der Code für jeden, der ihn liest, klarer und verständlicher ist als ein Code, der goto enthält: ein Label kann im Prinzip von verschiedenen Stellen aus angesprungen werden, und bindet deshalb zwangsläufig mehr Aufmerksamkeit von dem, der sich in das Programm einlesen muss, als eine Repeat oder while Schleife, wo die Schleifenstruktur explizit klar ist. |
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
@ Luckie
Die Idee, die (Endlos)Schleife mit einer Variable abzubrechen, die man durch Klick auf einen Button umschalten kann, ist schon gut, aber erraten konnte man diese Absicht aus Deinem geposteten Code nur schwer. Und der erste Befehl, finish := not finish, bleibt für mich auch in dem Kontext unverständlich, weil es ja vom restlichen Programm abhängt, welchen Wert die Variable finish vorher hat. Wenn ich überhaupt will, dass die Schleife begonnen wird, ist an der Stelle finish := false eher angebracht, über einen Button kann man dann den variablenwert umschalten und die Schleife abbrechen. |
Re: Uhr ohne Hilfe vom "Ttimer" erstellen
Nun ja, ich habe eben vorausgesetzt, dass man etwas mitdenkt und meinen Code mehr als Anregung gesehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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