在Inno Setup Pascal脚本中将布尔值转换为String的最简单方法是什么?这个应该完全隐含的微不足道的任务似乎需要一个完整的if
/ else
构造。
function IsDowngradeUninstall: Boolean;
begin
Result := IsCommandLineParamSet('downgrade');
MsgBox('IsDowngradeUninstall = ' + Result, mbInformation, MB_OK);
end;
这不起作用,因为“类型不匹配”。 IntToStr
也不接受Boolean
。 BoolToStr
不存在。
答案 0 :(得分:19)
如果您只需要一次,最简单的内联解决方案是将Boolean
转换为Integer
并使用IntToStr
function。 1
获得True
而0
获得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;