Forum: Multimedia
Delphi
by himitsu,
4. Mär 2009
du mußt bedenken, daß die Dauer bedingt durch die Messung nie immer genau gleich sein kann.
z.B. wenn GetTickCount eine Taktrate von 8ms hat, dann wäre die Dauer von Sleep(0) bis Sleep(7) Gundsätzlich erstmal gleich, aber dazu kommt noch der Zeitpunkt wo man das Sleep bzw die Messung startet.
Zeit Wert von Start Start
in ms GetTickCount Sleep(1..8) Sleep(9..16)
...
Forum: Multimedia
Delphi
by himitsu,
3. Mär 2009
Mit einem Sleep, Delay oder gar DelayQPC bekommt man keine einheitlichen Intervalle hin.
selbst wenn sleep genauer wäre, würde dennoch das Intervall nicht stimmen.
mach was << das braucht auch Zeit
warte 10 ms
mach was << dieses ebenfalls
warte 10 ms
mach was << und hier wieder
Forum: Multimedia
Delphi
by himitsu,
2. Mär 2009
hier kann Windows die Thread auf die beiden CPUs verteilen
hier muß es ständig zwischen den Threads hin- und herschalten.
Wie schon gesagt ... Windows (auch nicht Linux) ist nicht für sehr zeitgenaue und schnelle Sachen ausgelegt.
Lösungsen: siehe meine beiden Vorredner.
Forum: Multimedia
Delphi
by himitsu,
2. Mär 2009
Delay ist Sleep+Application.ProgressMessages
Ein kleiner Microcontroler, welcher den Anforderungen entspricht.
dann legst du womöglich das ganze Windows lahm.
Forum: Multimedia
Delphi
by himitsu,
2. Mär 2009
Sleep, Delay und TTimer verwenden intern GetTickCount und das hat aktuell eine Auflösung von 8-10ms ... bei so vielen kurzen Intervallen summieren sich die Fehler und es kommt zu solchen Differenzen.
Was willst du denn erreichen?
für "genauere" Messungen/Intervalle im unteren Millisekundenbereich, müßtest du einen HighPerformeceCounter/-Timer verwenden.