บทความนี้จะอธิบายโดยย่อถึงวิธีการของ Delphi ในการใช้การนับถอยหลังระดับมิลลิวินาทีพร้อมตัวอย่าง โดยทั่วไป สามารถรับจำนวนการสั่นสะเทือนของตัวนับความถี่ประสิทธิภาพสูงของระบบภายในหนึ่งมิลลิวินาที หากจำนวนการสั่นสะเทือนของนาฬิกาเกิน 10 มิลลิวินาที การแสดงผลของ edit3 จะถูกรีเฟรชเพื่อแสดงเวลาที่ผ่านไปจริงตั้งแต่เริ่มต้นการนับ จนถึงเวลานับรหัสการใช้งานเฉพาะดังต่อไปนี้:
หน่วย Unit1; อินเทอร์เฟซ Windows, ข้อความ, SysUtils, คลาส, กราฟิก, การควบคุม, แบบฟอร์ม, กล่องโต้ตอบ, ExtCtrls, StdCtrls, mmsystem; พิมพ์ TForm1 = class (TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; : TButton; Timer1: TTimer; Label1: TLabel; TLabel; Label3: TLabel; ขั้นตอน FormCreate (ผู้ส่ง: TObject); ขั้นตอน Button1Click (ผู้ส่ง: TObject); var Form1: TForm1; acttime1, acttime2: smmcount, stimercount, spcount: เดียว; htimeid: จำนวนเต็ม; iten: จำนวนเต็ม; protimecallback: tfntimecallback; ขั้นตอนการดำเนินการ (utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall; ขั้นตอนการดำเนินการ {$ R * .DFM} // เริ่มต้น acttime2:=gettickcount-acttime1; form1.button2.enabled :=false; form1.button1.enabled :=true; form1.timer1.enabled :=false; end; ขั้นตอน timeproc (utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall;begin form1.edit2.text:=floattostr(smmcount); smmcount:=smmcount-0.01;end;ขั้นตอน TForm1.FormCreate(Sender: TObject);begin button1.caption :='Start countdown'; :='สิ้นสุดการนับถอยหลัง'; button2.enabled :=false; button1.enabled :=true; timer1.enabled :=false; smmcount:=60; stimercount:=60;end;ขั้นตอน TForm1.Button1Click(ผู้ส่ง: TObject);var lgtick1,lgtick2,lgper:tlargeinteger; เปิดใช้งาน :=true; button1.enabled :=false; timer1.enabled :=true; timer1.interval :=10; protimecallback:=timeproc; htimeid:=timesetevent(10,0,protimecallback,1,1); // รับตัวนับความถี่ประสิทธิภาพสูงของระบบ ที่ จำนวนการสั่นสะเทือนในหนึ่งมิลลิวินาที queryPerformancefrequency(lgper); queryPerformancecounter(lgtick1); lgtick2:=lgtick1; spcount:=60; ในขณะที่ spcount>0 เริ่ม queryPerformancecounter(lgtick2); // หากจำนวนการสั่นของนาฬิกาเกิน 10 มิลลิวินาที ให้รีเฟรชการแสดงผลของ edit3 ถ้า lgtick2 > iten เริ่ม lgtick1 := lgtick2; spcount := spcount - 0.01; edit3.text := floattostr (spcount); application.processmessages; end; end; end; ขั้นตอน TForm1.Timer1Timer (ผู้ส่ง: TObject); เริ่มแก้ไข 1.text := floattostr (stimercount: = stimercount-0.01; end; ขั้นตอน TForm1.Button2Click ผู้ส่ง: TObject); เริ่มต้น proendcount; //แสดงเวลาที่ผ่านไปจริงตั้งแต่เริ่มนับจนถึงการนับ showmessage('actual elapsed time'+inttostr(acttime2)+'milliseconds');end;end.