2016-01-27 20 views
5

Qual è il modo più semplice per convertire un valore booleano in una stringa in uno script Pascal Inno Setup? Questo compito banale che dovrebbe essere completamente implicito sembra richiedere una costruzione completa if/else.Converti booleano in stringa con Inno Setup

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

Questo non funziona perché "Tipo mancata corrispondenza". IntToStr non accetta neanche uno Boolean. BoolToStr non esiste.

risposta

14

Se avete bisogno una sola volta, la soluzione in linea più semplice è quello di gettare il Boolean-Integer e utilizzare il IntToStr function. Ottieni 1 per True e 0 per False.

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

Anche se, io di solito uso l'Format function per lo stesso risultato:

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

(Contrariamente a Delphi) L'Inno Setup/Pascal Script Format converte implicitamente la Boolean-Integer per %d.


se avete bisogno di una conversione più fantasia, o se è necessario la conversione spesso, implementare la propria funzione, come @RobeN mostra già nella sua risposta.

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; 

o

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