| |||
変数内容を表示させると余計なもの(ゴミ) までついてしまう
| |||
|
HSP2を対象としてますが、HSP3でも出る可能性はなきにしもあらず。 バージョンが古かった時は、テキスト操作処理を行っていると、 たまに見えてはならないものも見えることがありました。 HSPでは、処理を高速化するために、変数に入った不要な文字列を除去する処理も簡素化されていました。 本来、最終文字以降は全て空にすべきところを、 最終文字の次の位置に「文字列終端を意味するEOF(ASCIIコードは0)」を代入し、 HSPで文字列を制御する際に、このNULL文字までを必要な文字として扱っていました。 しかし、文字列操作を行っていると、何のタイミングかは定かではありませんが、 この終端に付けるNULL文字が外れるのか付けられなかったのか正常に文字列終端に入らないときがありました。 NULL文字以降には、以前に入っていたテキストが入っているわけですから、 NULL文字までを読む形でなければ、余計なものがついてしまう形となります。 | |||
| 下記のスクリプトで文字列終端以降に、以前入れていた文字が残っていることの確認ができます。 | |||
string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" mes string // 最初の変数値を表示 string = "1234567890" mes string // 変更後の変数値を表示 poke string, 10, '*' // NULL文字位置を'*'に変更する mes string // NULL文字を置き換えると… |