이 문서에서는 예제를 통해 밀리초 수준 카운트다운을 구현하는 Delphi의 방법을 간략하게 설명합니다. 일반적으로 시스템의 고성능 주파수 카운터의 진동 수는 1밀리초 이내로 얻을 수 있습니다. 클럭 진동 수가 10밀리초를 초과하면 edit3의 표시가 새로 고쳐져 카운트 시작부터 실제 경과 시간이 표시됩니다. 구체적인 구현 코드는 다음과 같습니다.
단위 Unit1; 인터페이스는 Windows, 메시지, SysUtils, 클래스, 그래픽, 컨트롤, 양식, 대화 상자, ExtCtrls, StdCtrls, mmsystem을 사용합니다. TForm1 = class(TForm) Edit1: TEdit2: TEdit3: TButton; : TButton: TTimer1: TLabel2; TLabel; Label3: TLabel; 프로시저 Button1Click(Sender: TObject); 프로시저 Button2Click(Sender: TObject); var Form1: TForm1; acttime1,acttime2:smmcount,stimercount,spcount:single; htimeid:integer; protimecallback:tfntimecallback; 프로시저 timeproc(utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall; 프로시저 proendcount;implementation{$R *.DFM}//timesetevent 콜백 함수 proendcount ; acttime2 시작:=gettickcount-acttime1; form1.button2.enabled :=false; form1.timer1.enabled :=false; stimercount:=60; timekillevent(htimeid);end; 절차 timeproc(utimerid, umessage: uint; dwuser, dw1, dw2: dword) stdcall;begin form1.edit2.text:=floattostr(smmcount); smmcount:=smmcount-0.01;end;procedure TForm1.FormCreate(Sender: TObject);begin 버튼1.caption :='카운트다운 시작'; :='카운트다운 종료'; 버튼2.enabled :=false; 버튼1.enabled :=true; 타이머1.enabled :=false; smmcount:=60; spcount:=60;end;procedure TForm1.Button1Click(Sender: TObject);var lgtick1,lgtick2,lgper:tlargeinteger; 활성화 :=true; 버튼1.활성화 :=false; Timer1.enabled :=true; timecallback:=timeproc; htimeid:=timesetevent(10,0,protimecallback,1,1); //시스템의 고성능 주파수 카운터 가져오기 at 1밀리초 동안의 진동수 queryperformance주파수(lgper); ftemp:=lgper/1000; iten:=trunc(ftemp*10); queryperformancecounter(lgtick1); lgtick2:=lgtick1; spcount>0 do start queryperformancecounter(lgtick2); //클럭 진동 횟수가 10밀리초를 초과하면 edit3의 표시를 새로 고칩니다. if lgtick2 - lgtick1 > iten lgtick1 시작 := lgtick2; spcount := spcount - 0.01 := floattostr(spcount); end; end;procedure TForm1.Timer1Timer(Sender: TObject);begin edit1.text := stimercount:=stimercount-0.01;end;procedure TForm1.Button2Click( 보낸 사람: TObject);proendcount 시작; //카운트 시작부터 카운트까지 실제 경과 시간을 표시합니다. showmessage('실제 경과 시간'+inttostr(acttime2)+'밀리초');end;end.