// รับความแม่นยำในระดับมิลลิวินาที (วิธีการ 1):
วาจา
T1, T2: int64;
R1: int64;
เริ่ม
t1: = getTickCount; // เริ่มนับจำนวน Windows API
sleep (1000); {do ... } // เรียกใช้รหัสที่จะหมดเวลา
t2: = getTickCount; // รับค่านับปลาย
R1: = T2-T1; // รับเวลาเวลาหน่วยมิลลิวินาที (MS)
ShowMessage (inttostr (R1));
จบ;
// รับความแม่นยำในระดับมิลลิวินาที (วิธีการ 2):
// ใช้ DateUtils; // DateUtils UNIT อ้างอิง
วาจา
T1, T2: tdatetime;
R1: int64;
เริ่ม
t1: = now (); // รับเวลาเริ่มต้น
sleep (1000); {do ... } // เรียกใช้รหัสที่จะหมดเวลา
t2: = now (); // รับเวลาสิ้นสุด
r1: = secondsbetween (t2, t1); // รับเวลาเวลา, หน่วยวินาที (s)
R1: = MillisecondsBetween (T2, T1); // รับเวลาเวลาหน่วยมิลลิวินาที (MS)
ShowMessage (inttostr (R1));
จบ;
// หมายเหตุ: หลังจากทดสอบสองวิธีข้างต้นดูเหมือนว่าพวกเขาสามารถสร้างความแม่นยำของเวลา 0.01 วินาทีหลังจากการทดสอบด้วยตัวเองเท่านั้น
// รับความแม่นยำในระดับเวลาของระบบ:
วาจา
C1: int64;
T1, T2: int64;
R1: Double;
เริ่ม
QueryPerformanceFrequency (C1); // Windows API ส่งคืนความถี่การนับ (Intel86: 1193180) (ได้รับจำนวนการสั่นสะเทือนของตัวนับความถี่ประสิทธิภาพสูงของระบบในหนึ่งมิลลิวินาที)
queryperformanceCounter (t1); // windows api รับค่านับเริ่มต้น
sleep (1000); {do ... } // เรียกใช้รหัสที่จะหมดเวลา
queryperformanceCounter (t2); // รับค่าจำนวนสิ้นสุด
r1: = (t2-t1)/c1; // รับเวลาเวลาหน่วยวินาที (s)
R1: = (T2-T1)/C1*1000; // รับเวลาเวลา, หน่วยมิลลิวินาที (MS)
r1: = (t2-t1)/c1*1000000; // รับเวลาเวลา, microseconds ยูนิต
showmessage (floattosttr (R1));
จบ;