代码之家  ›  专栏  ›  技术社区  ›  sazr

使用NSIS拼接功能导致崩溃

  •  1
  • sazr  · 技术社区  · 12 年前

    我正在使用函数 Splice 在我的NSIS安装程序中。

    我的问题: 当我执行下面的代码时,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
    
    1 回复  |  直到 12 年前
        1
  •  1
  •   nawfal Donny V.    12 年前

    我在使用拼接功能时不小心遇到了同样的问题。但我只花了一点时间在谷歌上搜索就找到了正确的解决方案。关键是拼接不是为了这个。这个 Push "user_lib_4d" 行实际上需要一个分隔符字符串。解决方案是使用任何用于此目的的实际字符串函数。有 plenty out there 这使得这里不可能全部提及。您可以依赖搜索子字符串、移除或替换函数。我使用并取得成功的是 StrRep 通过dirtydingus。

    在您的情况下:

    “假人”部分

    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