2017-02-01 7 views
0

言葉でタイムスパン(秒、分、時間)をフォーマットする方法How to show percent done, elapsed time and estimated time progress?Inno Setupの - 私は、コードを使用してい

私は「秒」、「分」と「時間」で番号を交換したいと思いますつまり、「0:01:37」の代わりに、「1分37秒」と表示したいと思います。出来ますか?

+0

あなたの代わりに「午前3時20分15秒」のような時代のあなたは「3時間、20分、15を表示することを意味しますか秒 "ですか?または単に「3時間」、後で「0:20:15」のようなときには、「20分」を表示したいでしょうか? –

+0

可能であれば、数字を秒、分、時間で置き換えます。すなわち、0:01:37の代わりに、1分37秒を表示したいと思います。 –

+0

あなたを止めるのは何ですか?最後の行を変更して、必要なものを表示させます。値と書式文字列があります。書式文字列を変更します。 –

答えて

1

ビット賢く実装:

procedure AddTime(var S: string; Count: Integer; L: string); 
begin 
    if Count > 0 then 
    begin 
    if S <> '' then 
    begin 
     S := S + ' '; 
    end; 
    if Count > 1 then L := L + 's'; 
    S := S + Format('%d %s', [Count, L]); 
    end; 
end; 

function TicksToStr(Value: DWORD): string; 
var 
    I: DWORD; 
    Hours, Minutes, Seconds: Integer; 
begin 
    I := Value div 1000; 
    Seconds := I mod 60; 
    I := I div 60; 
    Minutes := I mod 60; 
    I := I div 60; 
    Hours := I mod 24; 

    AddTime(Result, Hours, 'hour'); 
    AddTime(Result, Minutes, 'minute'); 
    AddTime(Result, Seconds, 'second'); 
    if Result = '' then Result := '-'; { no time } 
end; 
+0

ありがとうございました!!!! –

+0

正しく表示されないものはありますか?あなたの問題を説明する方法を学んでください!それは約0秒残っていますか? –

+1

私はすでに自分の答えを編集しています - " - "を0に表示したいものに置き換えてください。 –

2

表示する文字列をFormatに変更するだけです。ゼロをスキップして、複数のハンドル

function TicksToStr(Value: DWORD): string; 
var 
    I: DWORD; 
    Hours, Minutes, Seconds: Integer; 
begin 
    I := Value div 1000; 
    Seconds := I mod 60; 
    I := I div 60; 
    Minutes := I mod 60; 
    I := I div 60; 
    Hours := I mod 24; 
    Result := Format('%.2d hours, %.2d minutes, %.2d seconds', [Hours, Minutes, Seconds]); 
end; 
+0

ありがとう@KenWhite !! –

関連する問題