Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Timer maximum (https://www.delphipraxis.net/21691-timer-maximum.html)

faux 6. Mai 2004 15:40


Timer maximum
 
Hallo!

Ich will, dass mein Timer alle 216000000 Millisekunden (also jede Stunde) ausgeführt wird. Ist das zu hoch? Wo liegt die Obergrenze?
Wenns nicht geht, wie mach ich das sonst?

danke schon mal...

gmarts 6. Mai 2004 15:43

Re: Timer maximum
 
Hallo!
Müsste eigentlich funktionieren, wenn nicht dann frage doch einfach jede Minute oder alle 10s oder wie auch immer die Uhrzeit ab und ermittel so die vergangene Stunde.

s14 6. Mai 2004 15:47

Re: Timer maximum
 
Ist eine Stunde nicht 3600000 Millisekunden :shock:

Da der Intervall als Cardinal deklariert ist sind maximal 4294967295 Millisekunden möglich, glaub ich.

Gruß
s14

S2B 6. Mai 2004 15:47

Re: Timer maximum
 
Du könntest auch 2 (oder mehr) Timer verwenden, die sich gegenseitig starten/beenden! :stupid:

gmarts 6. Mai 2004 15:51

Re: Timer maximum
 
F1!

Code:

TTimer
Determines the amount of time, in milliseconds, that passes before the timer component initiates another OnTimer event.

property Interval: Cardinal;

typ: Cardinal   range: 0..4294967295   unsigned 32-bit

faux 6. Mai 2004 15:54

Re: Timer maximum
 
Zitat:

Zitat von s14
Ist eine Stunde nicht 3600000 Millisekunden :shock:

Da der Intervall als Cardinal deklariert ist sind maximal 4294967295 Millisekunden möglich, glaub ich.

Gruß
s14

danke, das wars... :oops:

Dani 6. Mai 2004 16:30

Re: Timer maximum
 
Du kannst den Timer auch jede Sekunde ausführen und mit TDateTime Werten gucken ob eine Stunde rum ist...wäre vielleicht sogar besser, weil hohe Systemauslastung meiner Erfahrung nach den OnTimer Event verzögern kann.

Edit: sry mir ist gmarts Antwort entgangen.

-Dani

gmarts 6. Mai 2004 16:59

Re: Timer maximum
 
Zitat:

wäre vielleicht sogar besser, weil hohe Systemauslastung meiner Erfahrung nach den OnTimer Event verzögern kann.
...ist das so? Ich dachte der Timer orientiert sich auch an der Systemzeit?!?

faux 6. Mai 2004 17:07

Re: Timer maximum
 
Das glaube ich nicht, denn wenn man die Zeit verstellt müsste der Timer dann ja auch ausgelöst werden und das tut er bei mir nicht....

dizzy 6. Mai 2004 17:11

Re: Timer maximum
 
Auch der Timer ist nur ein Thread. Und wenn man ihm die Priorität strittig macht - z.B. mit einem anderen Programm, dass gerade auf hoher Priorität was aufwändiges rechnet, so kann ein Timer schonmal gut daneben liegen ;)
Win ist halt kein Echtzeit-OS. Da kann man nichts dran machen.

Dani 6. Mai 2004 17:17

Re: Timer maximum
 
Zitat:

...ist das so? Ich dachte der Timer orientiert sich auch an der Systemzeit?!?
Ich meinte eigentlich, dass starke System-Auslastung den Timer beeinträchtigen kann. Ich hatte z.B. mal ein Programm, das den Internet-Traffic messen sollte und dazu hatte ich einen Timer mit Intervall 1000ms benutzt. Der momentane Gesammt-Traffic wurde mit dem Gesammt-Traffic vor 1000ms verglichen und die Differenz davon angezeigt.

Wenn nun aber irgend ein Programm die CPU zu 100% auslastete oder ich eine DirectX Vollbild-Anwendung startete, wurde die Anzeige nicht mehr häufig genug (bzw. gar nicht) aktualisiert und sie zeigte viel zu hohe Werte an (z.B. 1892 kb/s auf ner TDSL-Leitung.)

Daraus schloss ich, dass der Timer wohl aufgrund der Belastung nicht oft genug ausgeführt worden war.
Edit: und wieder zu langsam...nach dem was ich gehört habe, haben gewöhnliche Timer allerdings keinen eigenen Thread, sondern sind eher sowas wie verborgene Fenster, die im Hauptthread mitverarbeitet werden.Der Traffic-Zähler hatte IDLE_PRIORITY, das wird wohl die Ursache für die Anfälligkeit meiner Timer gewesen sein. Aber ich schweife ab :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 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-2025 by Thomas Breitkreuz