2016-01-27 19 views
5

Inno Setup Pascalスクリプトでブール値を文字列に変換する最も簡単な方法は何ですか?完全に暗黙のはずのこの些細な作業は、本格的な構築を必要とするようです。if/elseInno Setupでブール値を文字列に変換

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

"タイプが一致しません"のため、これは機能しません。 IntToStrBooleanも受け付けません。 BoolToStrは存在しません。

答えて

14

あなたは一度だけ、それを必要とする場合は、最も簡単なインラインソリューションはIntegerBooleanをキャストしIntToStr functionを使用することです。 Trueの場合は1Falseの場合は0となります。

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

けれども、私は通常、同じ結果をFormat functionを使用します。

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

(デルファイに反して)Inno Setupのは/パスカルスクリプトFormatは、暗黙的に%dためIntegerBooleanを変換します。


あなたはより多くの空想の変換を必要とする、またはあなたは、多くの場合、変換が必要な場合@RobeNはすでに彼の答えに示したように、独自の機能を実装する場合。

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; 

または

[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; 
関連する問題