好吧,从几年开始我和NSIS安装程序一起工作,我在脚本中将所有变量都视为字符串。在某处我读到了这一点,NSIS内部将所有变量视为字符串,但不知道确切的事实。
现在我的查询是每当我们将某些值复制到某些变量中或使用逻辑语句检查变量的值时应该是理想的方法。让我告诉你一个我正在谈论的例子。
StrCpy $1 "Some string goes here"
StrCpy $2 999
${If} $1 == "String to match here"
${If} $2 == 999
${If} $2 == "999"
我想我没有 StrCpy $ 1 案例的其他选项,因为我将字符串复制到变量中,但对于 StrCpy $ 2 的情况,也许我可以写 StrCpy $ 2" 999" 。同样适用于 If 语句。
我想知道NSIS脚本的正确惯例。
答案 0 :(得分:1)
是的,内部所有内容都存储为字符串,并在执行数字操作时转换为数字。无法转换为数字的字符串被视为0。
StrCpy $2 999
和StrCpy $2 "999"
完全相同,仅当字符串有空格时才需要引号,即使没有空格,编译器也会自动删除引号。这也意味着${If} $2 == 999
和${If} $2 == "999"
是相同的。
比较时,您应使用=
,<>
,<
,<=
,>=
和>
来获取数字和{{1} }和==
表示字符串。
!=