【问题标题】:How to compare two variables using If Else in NSIS?如何在 NSIS 中使用 If Else 比较两个变量?
【发布时间】:2016-02-05 11:02:13
【问题描述】:
Var first
Var second
Section
   Strcpy $first "1.0"
   Strcpy $Second "2.1"
   ${If} $second > $first
     MessageBox MB_OK "Grater"
   ${Else}
     MessageBox MB_OK "Smaller"
   ${EndIf}
SectionEnd

我已经编写了上面的代码,但它显示的结果更小。以及如何将来自文本文件的整数或双精度值与预定义的双精度或整数值进行比较?

【问题讨论】:

    标签: nsis


    【解决方案1】:

    使用LogicLib,你可以像这样比较两个整数:

    Var first
    Var second
    Section
       StrCpy $first 1
       StrCpy $Second 2
       ${If} $second > $first
         MessageBox MB_OK "Grater"
       ${Else}
         MessageBox MB_OK "Smaller"
       ${EndIf}
    SectionEnd
    

    StrCpy 中使用大写C。还可以尝试从数字中删除引号 (") 以使其成为整数。

    另一种方法是:

    Push $first
    Push $Second
    StrCpy $first 8
    StrCpy $Second 2
    
    IntCmp $first $Second Equal Val1Less Val1More
    
    Equal:
        DetailPrint "$first = $Second"
        Goto End
    Val1Less:
        DetailPrint "$first < $Second"
        Goto End
    Val1More:
        DetailPrint "$first > $Second"
        Goto End
    End:
    
    Pop $Second
    Pop $first
    

    【讨论】:

    • 是的,即使我也试过这个,但它仍然给我同样的答案。他们还有其他方法可以比较 nsis 中的两个数字吗?
    • 谢谢朋友。第二个答案工作正常。现在我可以比较两个整数了。但是当我推送浮点数时,它会失败。你能告诉我如何比较两个浮点数吗??
    • 正如 Anders 正确提到的,NSIS 在基本指令中不支持浮点数
    • 好的。我可以使用 VersionCompare 来比较两个浮点数吗?
    • 我不这么认为。这不是VersionCompare 的目的
    【解决方案2】:

    NSIS 在基本指令中不支持浮点数,您需要使用默认安装中的Math plugin...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多