我在NSIS安装程序中使用函数Splice。
我的问题:当我执行下面的代码时,Splice函数会导致安装程序进入无限循环或崩溃(它没有响应)。怎么回事?
我使用Splice错了吗?如果我不能按照我想要的方式使用splice来分割我的字符串,是否还有另一个我可以用来分割字符串的函数?
Section "Dummy"
Push "user_lib_4d C:\12d\9.00\DTEI_Customisation\SURVEY_12d9\DTEI_Survey_User_Lib" # "user_lib_4d C:/blah"
Push "0"
Push "user_lib_4d"
Call Splice # causes an infinite loop/crash
SectionEnd
答案 0 :(得分:1)
使用Splice功能时,我偶然发现了同样的问题。但是我只是在谷歌上搜索一下才能找到合适的解决方案。重点是Splice不是为了那个。 Push "user_lib_4d"
行实际上需要一个分隔符字符串。解决方案是使用任何用于此目的的实际字符串函数。有plenty out there因此无法在此提及所有内容。您可以依赖搜索子字符串,删除或替换函数。我使用并取得成功的是使用dirtydingus StrRep。
在你的情况下:
“虚拟”部分
Push "user_lib_4d C:\12d\9.00\DTEI_Customisation\SURVEY_12d9\DTEI_Survey_User_Lib"
Push "user_lib_4d"
Push ""
Call StrRep
Pop $R0 ;result
MessageBox mb_ok $R0
SectionEnd
编辑:对于高级操作,您可以使用StrStrAdv