Inno 设置 - 如何以文字(秒、分钟、小时)格式设置时间跨度



我正在使用代码如何显示完成百分比、经过时间和估计的时间进度?

我想用"

秒"、"分钟"和"小时"代替数字,也就是说,我想显示:"1 分 37 秒",而不是"0:01:37"。可能吗?

只需将提供给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;

跳过零并处理复数的更智能的实现:

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;

最新更新