AGB  ·  Datenschutz  ·  Impressum  







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

Uhr ohne Hilfe vom "Ttimer" erstellen

Offene Frage von "poloroyd"
Ein Thema von poloroyd · begonnen am 27. Apr 2010 · letzter Beitrag vom 30. Apr 2010
 
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#25

Re: Uhr ohne Hilfe vom "Ttimer" erstellen

  Alt 29. Apr 2010, 21:27
@hathor: Wie ich sehe muß ich hier mein Post verteidigen.

1.
Zitat von hathor:
Der Vorschlag in #5 ist unbrauchbar - da kann man die CPU als Heizung benutzen.
Zitat:
while now - tick < 0 do sleep(10);
es wird höchstens 100 mal eine einfache Rechnung gemacht, wenn dir das zu viel ist, dann warte doch einfach länger.
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 von hathor:
Die Funktion MsgWaitForMultipleObjects ist die Lösung:

Delphi-Quellcode:
...
Label go;
...
Goto go;
...
Das ist jetzt nicht dein Ernst. Ein goto im Quelltext und der Lehrer wird garantiert eine 6 dafür vergeben, das war ja zu meiner Zeit schon so. Und das soll besser sein als mein Quellcode?

3.
Zitat von hathor:
Delphi-Quellcode:
begin
go:
  ms:=1000; //millisec
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickcount64 + ms;
    while (ms > 0) and
         (MsgWaitForMultipleObjects(1, Event, False, ms, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      if Application.Terminated then Exit;
      ms := Tick - GetTickcount64;
      Application.ProcessMessages;
    end;
  finally
    CloseHandle(Event);
  end;
Label1.Caption:= TimeToStr(now);
//Uhr zeichnen
Goto go;
end;
Damit wird deine "Uhr" immer nachgehen. Die Uhr wird die Zeit nachgehen die der Rechner braucht um Application.ProcessMessages; auszuführen.
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
  Mit Zitat antworten Zitat
 


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 06:04 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 by Thomas Breitkreuz