1

我在我的 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
4

1 回答 1

1

在使用 Splice 功能时,我不小心遇到了同样的问题。但我只在谷歌上搜索了一下就找到了正确的解决方案。关键是 Splice 不是为此而设计的。该Push "user_lib_4d"行实际上需要一个分隔符字符串。解决方案是使用任何用于此目的的实际字符串函数。那里有很多,因此无法在此一并提及。您可以依赖搜索子字符串、删除或替换函数。我使用并取得成功的是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

部分结束

编辑:对于高级操作,您可以使用StrStrAdv

于 2012-07-22T18:11:30.110 回答