Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer Intervall Grenze (https://www.delphipraxis.net/138491-timer-intervall-grenze.html)

chicky 11. Aug 2009 11:51


Timer Intervall Grenze
 
Gibt es für Timer eine IntervallGrenze nach oben? Geht also z.B.
Delphi-Quellcode:
MyTimer.Interval := 600000;
für 10 Minuten. Oder kann es da Probleme geben?

jfheins 11. Aug 2009 11:54

Re: Timer Intervall Grenze
 
Nach oben gibt es nur die Granze des Datentyps (also was um 2 Mrd.)

Nach unten gibt es die Grenze von ca. 20ms - genauer geht es mit dem Timer nicht. (also sind deine 10 Minuten auch 10Minuten +- 20ms)

chicky 11. Aug 2009 12:03

Re: Timer Intervall Grenze
 
Dann muss es an etwas anderem liegen. Wenn ich nämlich mein Ereignis im 5 MinutenTakt ausführen lasse, tut er auch was er soll,aber bei 10 Minuten hapert es..

Luckie 11. Aug 2009 12:08

Re: Timer Intervall Grenze
 
Zitat:

Zitat von chicky
aber bei 10 Minuten hapert es..

Was heißt "hapern"? Für mich ist das keine aussreichende Fehlerbeschreibung, um dir helfen zu können.

jfheins 11. Aug 2009 12:09

Re: Timer Intervall Grenze
 
Dann lass dir mal das tatsächliche Intervall ausgeben:

- globale Variable
Delphi-Quellcode:
var Last: Cardinal;
Da wo der Timer gestartet wird:
Delphi-Quellcode:
Last := GetTickcount;
Und im OnTimer:
Delphi-Quellcode:
showmessage(inttostr(GetTIckCount - Last));
Last := GetTickcount;

chicky 11. Aug 2009 12:29

Re: Timer Intervall Grenze
 
Er gibt beim ers´ten Mal 600000 aus

Zitat:

Was heißt "hapern"?
Er führt mal nach 10 Minuten, mal nach 7 usw. die Anweisung aus.

mleyen 11. Aug 2009 13:07

Re: Timer Intervall Grenze
 
Kann das evtl. an der zu startenden Anwendung liegen?

Falls nicht kannst du ja nochmal folgendes testen:
Versuch mal das Programm in einer eigenen Schleife mit Sleep() / Delay() alle 10 Minuten zu starten, dann sehen wir ja ob´s am TTimer liegt.

chicky 11. Aug 2009 13:18

Re: Timer Intervall Grenze
 
Wie meinst du?

TeronG 11. Aug 2009 13:24

Re: Timer Intervall Grenze
 
Zitat:

Zitat von chicky
Er gibt beim ers´ten Mal 600000 aus

Er führt mal nach 10 Minuten, mal nach 7 usw. die Anweisung aus.

Brauchst du evtl. bisschen (z.B: 3 Minuten) bis du die Meldung weg klickst? Denn erst dann merkt er sich die neue Zeit. (imho ^^)

Kannst ja mal die Meldung in ein Label/Statusbar schreiben... oder in eine memo!?

chicky 11. Aug 2009 13:32

Re: Timer Intervall Grenze
 
Liegt nicht am KLicken. Denn auch ohne Message sehe ich an meinen Timestamps, den Zeitunterschied

Ines 11. Aug 2009 13:38

Re: Timer Intervall Grenze
 
Hallo Chicky,

bei mir sieht die onTimer-Procedure folgendermaßen aus:

Delphi-Quellcode:
begin
Timer1 := false;
- Code -
Timer1 := true;
end;
Vielleicht hilft's.
Grüße
Ines

Namenloser 11. Aug 2009 13:44

Re: Timer Intervall Grenze
 
Zitat:

Zitat von Ines
Delphi-Quellcode:
begin
Timer1 := false;
- Code -
Timer1 := true;
end;

Das ist unnötig, solange nicht irgendwo im OnTimer-Code Messages abgearbeitet werden (application.processmessages).

mleyen 11. Aug 2009 13:45

Re: Timer Intervall Grenze
 
Daran dürfte es eigentlich nicht liegen.
Mich würde mal interressieren ob du hierbei richtige 'Timestamps' bekommst:

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin
  while True do
  begin
    ShellExecute(0, 'open', 'calc.exe', '', '', 0);
    Sleep(600000);
  end;
end;

Edit:

So, ich hab´s gerade nen Timer im Hintergrund laufen lassen und siehe da, genau 600 Sekunden später Piept mein Rechner.
Das Problem muss an deinem Code liegen / Deinen Zeitmessungen liegen

himitsu 11. Aug 2009 13:54

Re: Timer Intervall Grenze
 
laut MSDN (MSDN-Library durchsuchenSetTimer) gibt es zwar eine Grenze,
wobei das Maximum allerdings bei $7FFFFFFF liegen soll, also etwa 25 Tage :gruebel:
MSDN
uElapse

[in] Specifies the time-out value, in milliseconds.

...
Windows Server 2003: If uElapse is greater than USER_TIMER_MAXIMUM, the timeout is set to USER_TIMER_MAXIMUM.
...

Sharky 11. Aug 2009 14:27

Re: Timer Intervall Grenze
 
Zitat:

Zitat von chicky
Dann muss es an etwas anderem liegen. Wenn ich nämlich mein Ereignis im 5 MinutenTakt ausführen lasse, tut er auch was er soll,aber bei 10 Minuten hapert es..

Bevor wir weiterraten würde es sicher helfen wenn Du ersteinmal deine OnTimer Methode zeigst. Eventuell ist ja schon dort etwas auffälliges.


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