AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Ein schnelleren Timer? Gibt es sowas?

Ein schnelleren Timer? Gibt es sowas?

Ein Thema von sarte · begonnen am 13. Sep 2008 · letzter Beitrag vom 13. Sep 2008
Antwort Antwort
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#1

Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 11:44
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 11:48
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
  Mit Zitat antworten Zitat
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 11:51
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?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 11:52
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 11:56
soll ich diese Komponente benutzen für nen Multimedia Timer? http://www.delphipraxis.net/internal...t.php?t=103162
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 12:01
Besser wäre es, das Programmdesign zu überdenken und nicht mit allen Möglichkeiten versuchen, einen schnellen Timer zu bekommen.
  Mit Zitat antworten Zitat
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 12:05
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?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 12:09
Du kannst auch anstatt in 1er-Schritten in 10er-Schritten zählen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 12:24
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
sarte

Registriert seit: 23. Mai 2008
Ort: Australien
66 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Ein schnelleren Timer? Gibt es sowas?

  Alt 13. Sep 2008, 12:36
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 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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf