2015-01-11 12 views
1
procedure TForm1.TimerSWTimer(Sender: TObject); 
var 
Hour, Min, Sec, MSec: word; 
begin 
ElapsedTime := Time - StartTime + Totaltime ; 
DecodeTime(elapsedtime, Hour, Min, Sec, MSec); 
LabelSW.Text := IntToStr(Hour) + ':'+ IntToStr(Min) + ':'+ IntToStr(Sec) + ':' + IntToStr(Msec); 
end; 

형식, 주요 문제는 라벨에 표시된 시간 형식이 0:0:0:0 점이다, 나는 그것을 위해 00:00:00:000을 싶습니다 시간, 분, 초 및 밀리 초. 나는 온라인에서 찾은 많은 것들과 코드를 시도했지만 그 중 아무도 나를 도왔다. 내가 스톱워치를 시작하면델파이 스톱워치 시간이 나는 내 응용 프로그램으로 구현하기 위해 노력하고 스톱워치의 코드가

는 시간이 0:0:0:10, 0:0:0:100 않고, 0:0:0:1 같이 가고, 전체 초 밀리 초는 1 소수점 (1 대신 001)로 이동 한 후. 그들은 (대신 09 9) (10)에 도달 할 때까지 시간, 분, 초 같은 것은, 그들은 내가 시도

.. 1 진에 표시됩니다 :

  • Addleadingzeroes가 작동

    사용법 :

    AddLeadingZeroes(2005, 10) ; 
    

    '0000002005'문자열 값이됩니다.

  • 시간 만 - 당신이 좋은 챕스 중 하나가 도움이 될 수있는 경우 앞에 0이

    ShowMessage('hh:nn:ss.zzz = '+FormatDateTime('hh:nn:ss.zzz', myDate)); 
    

와 숫자 값, 내가 대단히 감사하겠습니다.

건배.

+1

그리고 무엇 : System.Diagnostics 네임의 RTL TStopwatch 고급 기록을 사용


, 그것은 좀 더 쉽게 얻는다 .com/Libraries/XE5/ko/System.Diagnostics.TStopwatch)? –

+2

labelSW.Text : = 형식 ('% 2.2u : % 2.2u : % 2.2u : % 3.3u', [시간, 분, 초, MSec]); http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.Format을 참조하십시오. –

+0

@SirRufo 죄송합니다.이 문제에 적응하기가 쉽지 않습니다. 구현하기 위해 온라인에서이 예제를 찾았습니다. Tstopwatch atm을 사용하는 방법을 모릅니다. , havent 노력 tbh. –

답변

7

http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.Format

labelSW.Text := Format('%2.2u:%2.2u:%2.2u:%3.3u',[Hour,Min,Sec,MSec]); 

정밀도 지정이 제로로 왼쪽 패딩을하게 참조하십시오. //docwiki.embarcadero : [`System.Diagnostics.TStopWatch`] (HTTP에 대한

uses 
    System.SysUtils, 
    System.Diagnostics; 

var 
    sw: TStopwatch; 
... 
sw := TStopwatch.StartNew; // Start measuring time 
... 
procedure TForm1.TimerSWTimer(Sender: TObject); 
begin 
    LabelSW.Text := 
    FormatDateTime('hh:nn:ss:zzz',sw.ElapsedMilliseconds/MSecsPerDay); 
end;