![]() |
AW: Timer Reset ?
Zitat:
|
AW: Timer Reset ?
Zitat:
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 |
AW: Timer Reset ?
Zitat:
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. |
AW: Timer Reset ?
Mal blöde Frage, benutzt du VmWare oder VirtualBox, oder *würg* Parallels ?
Rollo |
AW: Timer Reset ?
Zitat:
|
AW: Timer Reset ?
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 |
AW: Timer Reset ?
Man kann sich auch selbst einen Timer machen mit
WaitableTimer
Delphi-Quellcode:
AUSGABE:
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; 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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