使用Inno Setup将Boolean转换为String

时间:2016-01-27 14:56:24

标签: inno-setup pascalscript

在Inno Setup Pascal脚本中将布尔值转换为String的最简单方法是什么?这个应该完全隐含的微不足道的任务似乎需要一个完整的if / else构造。

function IsDowngradeUninstall: Boolean;
begin
    Result := IsCommandLineParamSet('downgrade');
    MsgBox('IsDowngradeUninstall = ' + Result, mbInformation, MB_OK);
end;

这不起作用,因为“类型不匹配”。 IntToStr也不接受BooleanBoolToStr不存在。

2 个答案:

答案 0 :(得分:19)

如果您只需要一次,最简单的内联解决方案是将Boolean转换为Integer并使用IntToStr function1获得True0获得False

MsgBox('IsDowngradeUninstall = ' + IntToStr(Integer(Result)), mbInformation, MB_OK);

尽管如此,我通常会使用Format function获得相同的结果:

MsgBox(Format('IsDowngradeUninstall = %d', [Result]), mbInformation, MB_OK);

(与Delphi相反)Inno Setup / Pascal Script Format隐含地将Boolean转换为Integer %d

如果您需要更精彩的转换,或者您需要经常进行转换,请执行您自己的功能,正如@RobeN已在其答案中显示的那样。

function BoolToStr(Value: Boolean): String; 
begin
  if Value then
    Result := 'Yes'
  else
    Result := 'No';
end;

答案 1 :(得分:3)

[Code]
function BoolToStr(Value : Boolean) : String; 
begin
  if Value then
    result := 'true'
  else
    result := 'false';
end;

[Code]
function IsDowngradeUninstall: Boolean;
begin
    Result := IsCommandLineParamSet('downgrade');
    if Result then 
      MsgBox('IsDowngradeUninstall = True', mbInformation, MB_OK)
    else
      MsgBox('IsDowngradeUninstall = False', mbInformation, MB_OK);
end;