2016-01-27 16 views
5

Cách dễ nhất để chuyển đổi một giá trị Boolean thành một chuỗi trong một kịch bản lệnh Pascal Inno là gì? Nhiệm vụ tầm thường này nên hoàn toàn tiềm ẩn dường như yêu cầu xây dựng toàn diện if/else.Chuyển đổi Boolean thành String với thiết lập Inno

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

Điều này không hiệu quả vì "Loại không phù hợp". IntToStr cũng không chấp nhận Boolean. BoolToStr không tồn tại.

Trả lời

14

Nếu bạn cần nó một lần duy nhất, là giải pháp đơn giản nhất là inline để cast Boolean-Integer và sử dụng IntToStr function. Bạn nhận được 1 cho True0 cho False.

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

Mặc dù, tôi thường sử dụng Format function cho kết quả tương tự:

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

(Trái với Delphi) Các Inno Setup/Pascal Script Format ngầm chuyển đổi Boolean-Integer cho %d.


Nếu bạn cần chuyển đổi lạ mắt hơn hoặc nếu bạn cần chuyển đổi thường xuyên, hãy triển khai chức năng của riêng bạn, như @RobeN đã hiển thị trong câu trả lời của anh ấy.

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; 

hoặc

[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; 
Các vấn đề liên quan