Moin Thomas,
ich hab's mal versucht
Code:
var
iFreq : int64;
iCountStart : int64;
iCountEnd : int64;
iDelta : int64;
iCountPerSec : int64;
iCount833 : int64;
begin
// INITIALISIERUNG
QueryPerformanceFrequency(iFreq);
QueryPerformanceCounter(iCountStart);
QueryPerformanceCounter(iCountEnd);
// Aufwand für den Aufruf ermitteln, um die Präzision zu erhöhen
iDelta := iCountEnd-iCountStart;
QueryPerformanceCounter(iCountStart);
while true do
begin
QueryPerformanceCounter(iCountEnd);
if ((iCountEnd-iCountStart-iDelta)/iFreq) >= 1 then
begin
iCountPerSec := (iCountEnd-iCountStart-iDelta);
break;
end;
end;
iCount833 := Round((iCountPerSec / 1000000) * 833);
// INITIALISIERUNG ENDE
// iCount833 enthält jetzt, so ca., die Anzahl der "Ticks" des
// PerformanceCounters für 0,833 ms
// iCount833, und iDelta müssen global zugänglich sein, und, sinnvoller Weise,
// beim Programmstart initialisiert werden.
// Wichtig: Der Wert ist Rechnerabhängig, kann also nicht einmal
// Berechnet und als Konstante angegeben werden.
// 0,833 ms warten
QueryPerformanceCounter(iCountStart);
while true do
begin
QueryPerformanceCounter(iCountEnd);
if (iCountEnd-iCountStart-iDelta) >= iCount833 then
begin
break;
end;
end;
Ob's so wirklich einwandfrei funzt weiss ich leider nicht, aber ich denke mal, dass Du da eine Testmöglichkeit hast, wenn Du es schon so genau wissen willst
![Wink](images/smilies/icon_wink.gif)
Einziges Problem: Der PerformanceCounter steht nicht auf jedem Rechner zur Verfügung.