Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ein schnelleren Timer? Gibt es sowas? (https://www.delphipraxis.net/120594-ein-schnelleren-timer-gibt-es-sowas.html)

sarte 13. Sep 2008 10:44


Ein schnelleren Timer? Gibt es sowas?
 
Hallo Leute,
ich habe eine Frage, gibt es einen schnelleren Timmer? Also noch weniger als 1ms?
Ich muss was programmieren und hab leider einen groben Fehler gemacht.
Eine Prozedure wird vom Timer alle 1ms aufgerufen, und in der Prozedure wird eine Zählervariable hochgezählt.
Die Zahl steht leider für eine Minute, und nach 60 Minuten wird eine Stundenzählervariable hochgezählt und so weiter.
Im Klartext: Auf einer Anzeige sieht man wie die Zeit rast, jedoch hab ich vergessen die Sekunden mit zuzählen.
Würde ich es jetzt hinzufügen, entspricht 1 Minute= 1 Sekunde und 1 Stunde = 60Minuten. Bis da ein Tag vergeht, dauert es viieeel zu lange...(24Min^^)
Gibt es einen Timer der noch schneller ist?
Ich könnte auch eine Schleife dazu benutzen, aber leider würde jeder PC in die Knie gehen, weil es unendlich gehen soll.
Ich hoffe ihr konntet folgen...
Sarte

jfheins 13. Sep 2008 10:48

Re: Ein schnelleren Timer? Gibt es sowas?
 
Auch wenn du den Timer auf 1 ms gestellt hast, löst er mx. alle 20ms (oder so) aus ;)

Nimm mal ein Schleife, die könnte etwas schneller zählen ;)

Und derr Pc geht schon nicht so leicht in die Knie - wenn du allerdings möchtest, dass die GUI benutzbar bleibt, solltest du ab und zu Application.Processmessages() aufrufen ;)

sarte 13. Sep 2008 10:51

Re: Ein schnelleren Timer? Gibt es sowas?
 
hmm aber welche Schleife soll ich benutzen?
Mit for schleife geht es schlecht, weil ich brauch halt einen Endwert und bei mir ist es doch unendlich...
Soll ich dass dann mit einer Repeat schleife machen? Würde eigentlich gehen^^
Aber wäre das nicht wieder zu schnell? wenn mein PC freie Bahn hat?
Könnte man die Schritte verlangsamen?

Apollonius 13. Sep 2008 10:52

Re: Ein schnelleren Timer? Gibt es sowas?
 
Du hast eindeutig einen Fehler in deinem Programmaufbau! Wenn du einen Timer mit so geringem Intervall brauchst, belegst du zwangsläufig einen Prozessor. Windows bietet den sogenannten Multimedia Timer an, der so geringe Intervalle beherrscht. Du solltest dir aber etwas anderes überlegen. Es genügt doch vollkommen, wenn du als Intervall 100 Millisekunden wählst.

sarte 13. Sep 2008 10:56

Re: Ein schnelleren Timer? Gibt es sowas?
 
soll ich diese Komponente benutzen für nen Multimedia Timer? http://www.delphipraxis.net/internal...t.php?t=103162

Die Muhkuh 13. Sep 2008 11:01

Re: Ein schnelleren Timer? Gibt es sowas?
 
Besser wäre es, das Programmdesign zu überdenken und nicht mit allen Möglichkeiten versuchen, einen schnellen Timer zu bekommen.

sarte 13. Sep 2008 11:05

Re: Ein schnelleren Timer? Gibt es sowas?
 
hmm
mehr als das hier:
Delphi-Quellcode:
procedure TCalculation.SetTime;
var aminute,anhour,aday: Integer;
begin
  aminute := minutes;
  anhour := hours;
  aday := days;

  inc(aminute);
    if aminute = 60 then
      begin
        aminute := 0;
        inc(anhour);
      end;
    if (anhour <> 0)and(anhour mod 6 = 0) then
    begin
    //einkaufspreis
    end;



    if anhour = 24 then
      begin
        anhour := 0;
        inc(aday);
      end;

  minutes := aminute;
  hours := anhour;
  days := aday;
end;
Ist es auch nicht, es wird über einen Timer aufgerufen. Also der Timer ruft eine Funktion auf:
Delphi-Quellcode:
function TCalculation.GetMinute:Integer;
begin
  result:= minutes;
end;
Das wars... und der Wert wird dann angezeigt, ist das so viel für ein Programm?

Die Muhkuh 13. Sep 2008 11:09

Re: Ein schnelleren Timer? Gibt es sowas?
 
Du kannst auch anstatt in 1er-Schritten in 10er-Schritten zählen

Apollonius 13. Sep 2008 11:24

Re: Ein schnelleren Timer? Gibt es sowas?
 
Das war auch mein Vorschlag.
Es kommt überhaupt nicht darauf an, wie viel du in der Timer-Routine machst - es ist allein schädlich, dass das Intervall so klein ist! Wenn du in einem Multitasking-System ein Intervall kleiner als die Zeitscheibengröße willst, kannst du nicht mehr mit einer niedrigen CPU-Auslastung rechnen. Auch zum Multimedia-Timer sagt die Dokumentation:
Zitat:

Periodic timer events with an event delay of 10 milliseconds or less consume a significant portion of CPU resources.

sarte 13. Sep 2008 11:36

Re: Ein schnelleren Timer? Gibt es sowas?
 
Zitat:

Zitat von Die Muhkuh
Du kannst auch anstatt in 1er-Schritten in 10er-Schritten zählen

Kann ich leider nicht machen, denn pro Sekunde muss dann eine komplizierte Rechnung durchgeführt werden(Wahrscheinlichkeit etc) so würde die Wahrscheinlichkeit getürkt werden, dann müsste ich 10/40 rechnen...

Zitat:

Zitat von Apollonius
Das war auch mein Vorschlag.
Es kommt überhaupt nicht darauf an, wie viel du in der Timer-Routine machst - es ist allein schädlich, dass das Intervall so klein ist! Wenn du in einem Multitasking-System ein Intervall kleiner als die Zeitscheibengröße willst, kannst du nicht mehr mit einer niedrigen CPU-Auslastung rechnen. Auch zum Multimedia-Timer sagt die Dokumentation:
Zitat:

Periodic timer events with an event delay of 10 milliseconds or less consume a significant portion of CPU resources.

Also was schlägst du vor? Was soll ich machen?
Es ist nicht so wichtig, ob ich eine niedrige Auslastung habe...

Der Timer hier: http://www.delphipraxis.net/internal...t.php?t=103162 funktioniert einwandfrei :)
Und ist schnell...und mein die Auslastung liegt bei 3%... das ist nichts


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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