1

NSIS インストーラーで関数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 機能を使用しているときに偶然同じ問題に出くわしました。しかし、適切なソリューションにたどり着くまでに、Google で少し検索するだけで済みました。ポイントは、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 に答える