Embarcadero Delphi
समय अंतराल माप
खोज…
Windows API GetTickCount का उपयोग करना
Windows API GetTickCount
फ़ंक्शन सिस्टम (कंप्यूटर) प्रारंभ होने के बाद से मिलीसेकंड की संख्या लौटाता है। सबसे सरल उदाहरण इस प्रकार है:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
// do something that requires measurement
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
end;
ध्यान दें कि GetTickCount
32-बिट DWORD
लौटाता है इसलिए यह प्रत्येक 49.7 दिनों में लपेटता है। रैपिंग से बचने के लिए, आप टिक अंतर की गणना के लिए GetTickCount64
(Windows Vista के बाद से उपलब्ध) या विशेष दिनचर्या का उपयोग कर सकते हैं:
function TickDiff(StartTick, EndTick: DWORD): DWORD;
begin
if EndTick >= StartTick
then Result := EndTick - StartTick
else Result := High(NativeUInt) - StartTick + EndTick;
end;
function TicksSince(Tick: DWORD): DWORD;
begin
Result := TickDiff(Tick, GetTickCount);
end;
वैसे भी ये रूटीन गलत परिणाम लौटाएगा अगर GetTickCount
की दो बाद की कॉल का अंतराल 49.7 दिन की सीमा से अधिक हो।
मिलीसेकंड को सेकंड के उदाहरण में बदलने के लिए:
var
Start, Stop, ElapsedMilliseconds: cardinal;
begin
Start := GetTickCount;
sleep(4000); // sleep for 4 seconds
Stop := GetTickCount;
ElapsedMillseconds := Stop - Start;
ShowMessage('Total Seconds: '
+IntToStr(round(ElapsedMilliseconds/SysUtils.MSecsPerSec))); // 4 seconds
end;
TStopwatch रिकॉर्ड का उपयोग करना
TStopwatch रिकॉर्ड के साथ डेल्फी जहाजों के हाल के संस्करण जो समय अंतराल माप के लिए है। उदाहरण उपयोग:
uses
System.Diagnostics;
var
StopWatch: TStopwatch;
ElapsedMillseconds: Int64;
begin
StopWatch := TStopwatch.StartNew;
// do something that requires measurement
ElapsedMillseconds := StopWatch.ElapsedMilliseconds;
end;
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow