横から失礼します。Velgailさんも仰っている部分と少し被るのですが、
HSPでは文字列の比較で条件によってはマイナスを返す仕様(?)があるようで
比較結果を数式に使用したりすると想定外の結果がもたらされる場合があります。
通常、以下のスクリプトでは落ちません。(数値での比較)
kekka="偽","真"
hensuA=30
hensuB=30
hensuC=20
mes "hensuA == hensuB: "+kekka((hensuA==hensuB))
mes "hensuA == hensuC: "+kekka((hensuA==hensuC))
mes "hensuA != hensuB: "+kekka((hensuA!=hensuB))
mes "hensuA != hensuC: "+kekka((hensuA!=hensuC))
以下のスクリプトでも落ちません。(文字列での比較)
kekka="偽","真"
hensuA="abc"
hensuB="abc"
hensuC="ABC"
mes "hensuA == hensuB: "+kekka((hensuA==hensuB))
mes "hensuA == hensuC: "+kekka((hensuA==hensuC))
mes "hensuA != hensuB: "+kekka((hensuA!=hensuB))
mes "hensuA != hensuC: "+kekka((hensuA!=hensuC))
しかし、以下のスクリプトでは落ちます。(↑と何が違うかな?)
kekka="偽","真"
hensuA="ABC"
hensuB="ABC"
hensuC="abc"
mes "hensuA == hensuB: "+kekka((hensuA==hensuB))
mes "hensuA == hensuC: "+kekka((hensuA==hensuC))
mes "hensuA != hensuB: "+kekka((hensuA!=hensuB))
mes "hensuA != hensuC: "+kekka((hensuA!=hensuC)) //ここで落ちる
どうも文字列比較の場合、最初の不一致箇所のアスキーコードが比較元の値より
大きいか小さいかによって返す1の正負が入れ替わるようですが…
この現象を踏まえますと、しまくろねこさんのスクリプトでは
>if (start_map_file != split_buff) && (strlen(split_buff) > 0) {
は
if (-1 && 1) {
となりますよね。文字列の比較動作も含めこの解釈って大丈夫なのかしら?
などと漠然と不安を感じます。単純にマイナスが原因だった場合、
if abs(start_map_file != split_buff) && (strlen(split_buff) > 0) {
とすることで直るかと思いますが、この文字列比較においてマイナスを返す現象は
バグなのか仕様なのかはっきりさせたい所ではあります。
つい比較文を計算式に組み込むクセがある方は特に注意が必要です。
個人的には比較結果は0か1に統一してほしい気持ちですがいかがでしょうか?