宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
INIファイルから文字列を読み込んで、それを空白(カンマ、コロン、パイプ、など何でもいいけどとにかく区切り文字)で区切ってループ回す、ということをNSISでやろうと思ったらどうやるのがスマートなんだろうか。
とりあえず見よう見まねと試行錯誤でこんな感じに書いたら一応期待通りに動いた。
!include "LogicLib.nsh"
!include "WordFunc.nsh"
!insertmacro WordFind
(中略)
Var STRING
Var PART
Var INDEX
(中略)
StrCpy $STRING "aaa bbb ccc ddd"
StrCpy $INDEX "0"
${While} 1 == 1
IntOp $INDEX $INDEX + 1
${WordFind} $STRING " " "+$INDEX" $PART
${If} $INDEX > 1
${IfThen} $PART == $STRING ${|} ${Break} ${|}
${EndIf}
Call MyFunction
${EndWhile}
${WordFind}
の第1引数が元の文字列、第2引数が区切り文字で、第3引数に「その文字で区切った後の配列の何番目の要素か(添え字は1から始まる)」を指定すると、第4引数の変数に要素の内容に相当する文字列が格納される。0番目あるいは配列の長さ(に相当するもの)よりも大きな数字を第3引数に渡すと、返り値は元の文字列そのままとなるので、これを脱出条件としてループさせてみた。
9月2日追記。配列(のようなもの)の長さが1つの時のことを考慮してなかったので修正した。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-08-31_split.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.