AGB  ·  Datenschutz  ·  Impressum  







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

Timer Reset ?

Ein Thema von BBoy · begonnen am 20. Feb 2007 · letzter Beitrag vom 24. Feb 2017
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Timer Reset ?

  Alt 24. Feb 2017, 08:55
Eine Timer-Nachricht hat zusammen mit WM_PAINT eine geringere Priorität als andere Nachrichten.
Exakt solltest du nicht im wörtlichen Sinne auffassen. Aber gerade wenn Timer-Nachrichten eine geringere Priorität hätte, müsste die Zeitspanne doch eher größer werden als kleiner. Hier habe ich aber den Effekt, dass es teils deutlich unter einer Sekunde ist.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#12

AW: Timer Reset ?

  Alt 24. Feb 2017, 10:37
Zitat:
Ein Windows-Standard-Timer ist sehr ungenau.
Naja, aber 0 ... 1000ms sollte es nicht sein.
Ich würde mal sagen +/- 50ms könnten drin sein.

Aber du machst ja gar keine echte Messung, nur das Caption hochzählen.
Könnte auch sein dass das Neuzeichen des Captions so lange braucht.

- Das würde ich dan mit QueryPerformanceCounter oder TStopWatch mal genau nachmessen
- und Caption mit Repaint edtwas forcieren

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Timer Reset ?

  Alt 24. Feb 2017, 12:25
Zitat:
Ein Windows-Standard-Timer ist sehr ungenau.
Naja, aber 0 ... 1000ms sollte es nicht sein.
Ich würde mal sagen +/- 50ms könnten drin sein.

Aber du machst ja gar keine echte Messung, nur das Caption hochzählen.
Könnte auch sein dass das Neuzeichen des Captions so lange braucht.
Wie gesagt, es ist ein seeeehr einfaches Testprogramm. Ich habe lediglich eine ungefähre Testmethode gebraucht. Aber auch du liegst falsch: Der Timer kommt in zu kurzen Intervallen, insofern ist die Repaint-Zeit vom Caption irrelevant ^^

Erfahrungsgemäß läuft gerade das NCPaint aber sehr flott ab, wesentlich höher priorisiert als Paints in der ClientArea. Deswegen verwende ich das gerne für Quick-and-Dirty-Tests. Ich konnte das Timer-Intervall auch auf 10 Sekunden stellen und es kommt teilweise < 1 Sekunde.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (24. Feb 2017 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#14

AW: Timer Reset ?

  Alt 24. Feb 2017, 13:26
Mal blöde Frage, benutzt du VmWare oder VirtualBox, oder *würg* Parallels ?

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Timer Reset ?

  Alt 24. Feb 2017, 14:29
Mal blöde Frage, benutzt du VmWare oder VirtualBox, oder *würg* Parallels ?
VirtualBox. Aber bevor du dich jetzt zu sehr auf die Virtualisierung versteifst: Das Problem trat zuerst nicht-virtualisiert auf der Hostmaschine auf.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#16

AW: Timer Reset ?

  Alt 24. Feb 2017, 14:36
Also solche Timer hatte ich zum Glück noch nicht.
Hat der Rechner denn sonst irgendwelche Macken ?

Also wenn vielleicht irgendwelche Tasks im Hintergrund extrem was verabeiten,
aber im Leerlauf sollte das nicht so extrem passieren.

Rollo
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#17

AW: Timer Reset ?

  Alt 24. Feb 2017, 16:20
Man kann sich auch selbst einen Timer machen mit
WaitableTimer

Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var
AlarmTimer : THandle;
Zeit : Large_Integer;
start, ende : Cardinal;
begin
  Memo1.lines.add('SetWaitableTimer: 1 sec Running');
  start:= GetTickCount;
AlarmTimer := CreateWaitableTimer(nil, False, nil);
CancelWaitableTimer(AlarmTimer); // goto Start
Zeit.QuadPart := 1 * (-10000000); // 1 Sekunde
SetWaitableTimer(AlarmTimer, Zeit.Quadpart, 0, nil, nil, False);
while WaitForSingleObject(AlarmTimer, 20) <> Wait_Object_0 do // Beispiel: 20msec
begin Application.ProcessMessages; end;
  end1:= GetTickCount;
  Memo1.lines.add(INTTOSTR(end1-start)+' msec');
  Memo1.lines.add('WaitableTimer: Ready');
end;
AUSGABE:
SetWaitableTimer: 1 sec Running
1000 msec
WaitableTimer: Ready

Alternative: 10 sec
Delphi-Quellcode:
var
  Form1: TForm1;
  start, end1 : Cardinal;

procedure TimerAPCProc (param: Pointer; dwTimerLowValue, dwTimerHighValue: CARDINAL); stdcall;
begin
  end1:= GetTickCount;
  Form1.Memo1.lines.add(INTTOSTR(end1-start)+' msec');
  Form1.Memo1.lines.add('WaitableTimer: Ready');
end;

procedure TForm1.Button9Click(Sender: TObject);
var
  HTimer: THandle;
  DueTime: Int64;
begin
  Memo1.lines.add('SetWaitableTimer: 10 sec Running');
  start:= GetTickCount;
  HTimer:= CreateWaitableTimer (nil, False, nil);
  if HTimer <> 0 then
    begin
      DueTime:= 10*(-10000000);//10 sec
      if SetWaitableTimer (HTimer, DueTime, 0,//once
                           @TimerAPCProc,
                           Pointer (HTimer), False) then
        BEGIN SleepEx (INFINITE, True); END;
      CloseHandle (HTimer);
    end;
end;

Geändert von t.roller (24. Feb 2017 um 20:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:57 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