unit StopWatch; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils,System.DateUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TForm1 = class(TForm) lblDigit: TLabel; btnStart: TButton; btnReset: TButton; lblStart: TLabel; lblStop: TLabel; Timer1: TTimer; btnPAUSE: TButton; lblCompare: TLabel; Edit1: TEdit; Label5: TLabel; procedure btnStartClick(Sender: TObject); procedure btnResetClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure btnPAUSEClick(Sender: TObject); private { Private declarations } public function GetTime(aDateTime : TDateTime) : String; end; var Form1: TForm1; FStartTime, FEndTime, FDurTime : TDateTime; bOngoing: boolean; CriticalSection : TRtlCriticalSection; implementation {$R *.dfm} procedure TForm1.btnStartClick(Sender: TObject); begin FStartTime := Now(); lblStart.Caption := 'Start : ' + TimetoStr(FStartTime); bOngoing := true; end; procedure TForm1.btnResetClick(Sender: TObject); var aStratTime : String; aEndTime : String; aDurTime : String; begin bOngoing := false; lblDigit.Caption := '00:00:00:000'; lblStart.Caption := 'Start : '; lblStop.Caption := 'Stop : '; lblCompare.Caption := 'Compare :'; end; procedure TForm1.btnPAUSEClick(Sender: TObject); begin lblStop.Caption := 'Stop : ' + TimeToStr(now()); if Timer1.Enabled then Timer1.Enabled := false else Timer1.Enabled := true; end; function TForm1.GetTime(aDateTime : TDateTime) : String; var aHour,aMin,aSec,aMSec : word; begin DecodeTime(aDateTime,aHour,aMin,aSec,aMSec); Result := IntToStr(aHour) + ':' + IntToStr(aMin) + ':' + IntToStr(aSec) + ':' + IntToStr(aMSec); end; procedure TForm1.Timer1Timer(Sender: TObject); var i,j,k : integer; begin k := StrToInt(Edit1.Text); EnterCriticalSection(CriticalSection); try if bOngoing = true then begin lblDigit.Caption := GetTime(now()- FStartTime); for i := 1 to k do j:= j+1; // Delay test; lblCompare.Caption := 'Compare : ' + IntToStr(MilliSecondOfTheSecond(now()-FStartTime)); end; finally LeaveCriticalSection(CriticalSection); end; end; initialization initializeCriticalSection(CriticalSection); finalization DeleteCriticalSection(CriticalSection); end.
옛날에 짰던 건데, 어딘가 있긴 하겠지만...
막상 인터넷 뒤져 보니, 잘 안 찾아져서
짜두었던 것.
걍 블로그 정리 작업 상...
감사합니다 하하하~
'취미 > Soft' 카테고리의 다른 글
[델파이, CP] Dgrabber for CP (0) | 2015.08.19 |
---|---|
[델파이, CP] Type Library Import (0) | 2015.08.19 |
[Mathematica] 기본 동작 (0) | 2015.08.17 |
키움 CDT 데이타 형식 및 텍스트 컨버전 (0) | 2015.08.17 |
[MATLAB] 엑셀 데이타 불러오기 - DDE link (0) | 2015.07.20 |
댓글