2016-01-27 30 views
5

Jaki jest najprostszy sposób przekonwertowania wartości Boolean na ciąg w skrypcie Inno Setup Pascal? To trywialne zadanie, które powinno być całkowicie niejawne, wydaje się wymagać pełnej konstrukcji o nazwie if/else.Konwersja Boolean na String z Inno Setup

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

To nie działa, ponieważ "Niezgodność typu". IntToStr nie akceptuje ani Boolean. BoolToStr nie istnieje.

Odpowiedz

14

Jeśli trzeba go tylko raz, najprostszym rozwiązaniem jest wbudowany do oddania Boolean do Integer i użyć IntToStr function. Otrzymasz 1 dla True i 0 dla False.

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

Choć zazwyczaj użyć Format function do tego samego rezultatu:

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

(W przeciwieństwie do Delphi) Inno Setup/Pascal Script Format niejawnie konwertuje Boolean do Integer dla %d.


Jeśli potrzebujesz bardziej fantazyjne konwersję, lub jeśli potrzebujesz konwersji często realizować swoją funkcję, jak @RobeN już pokazuje w swojej odpowiedzi.

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

lub

[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;