![]() |
0,833 ms Delay in Delphi?
Wie kann ich in Delphi ein Delay von 0,833 ms realisieren?
|
Hi,
Luckie hat doch mal was mit Delay in den Faq's geschrieben. Villeicht kannst du msec satt LongInt, als Real deklarieren und somit auch ,zahlen eingeben. Villeicht gehts ja. Grüsse, Daniel :) |
Moin Thomas,
schau Dir doch auch mal die Funktionen QueryPerformanceCounter, QueryPerformanceFrequency an. Dann blieben noch die Multimedia Timer. Mit GetTickCount usw. wirst Du da wohl leider nichts werden, da dessen Auflösung bestenfalls 1ms beträgt, und die Rückgabe der Werte erfolgt auch nicht gerade mit der höchsten Präzision. |
Kannst du mir n CODE-BEISPIEL basteln?? :D
|
Moin Thomas,
ich hab's mal versucht
Code:
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 ;-)
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; Einziges Problem: Der PerformanceCounter steht nicht auf jedem Rechner zur Verfügung. :-( |
Ich werds nächste Woche mal probieren, morgen schreib ich erstmal eine Lateinklausur (hoffentlich 4)....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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