| 幻魔の公子です。
止まる理由かどうかは知りませんが、いくつか気になった点を。 とりあえず、Else以降に命令を記述しないなら、Elseは必要ありません。
まず、このインクルードは現在行数が1のときに無限ループに陥ります。 TextStartラベルにおいて、現在行数が1のとき、If文全てが飛ばされます。(おそらく、これは意図された動作ではないでしょう) If〜If〜Else〜Endif〜If〜Endif〜(中略)〜Endifという順になっていますよね? おそらく、三つ目のElseと四つ目のEndifを最初のIfに対応させたいのではないかと予想しておりますが、これだと二つ目のIfに対応してしまいます。残りは順次IfとEndifが対になっているので、一つ目のIfと対応するのは最後のEndifなわけです。 そして、そこまで行くことがあった場合、現在行数が増えることは有り得ず、よって延々ループし続けるわけです。
>If Args(現在行数+1) > 35 Then ここですが、これはArgs()の文字数が35文字以上だったら、という意味でしょうか? おそらくこれには文字列が入るように思われるのですが。 でしたら、Len(Args(現在行数 + 1))とする必要があります。 違うのであれば申し訳ありません。
>PaintString - 480-高度1 Args(1) これの、「480-高度1」ですが、演算子と数、文字列の間には半角スペースが必要です。 ですから、(480 - 高度1)とすべきだと思われます。 「40*最終行数」とか、「450/最終行数」とかもですね。
> If 現在行数 > 2 Then >Else
や、
> If 現在行数 > 3 Then >EndIf
の部分は、どのような動作を意図されたものでしょうか? 上の方は、現在行数が2以下の場合に動作する、となります。 しかし、おそらく現在行数が1の場合にElse以下を実行し、また現在行数が3以上の場合にEndif以降を実行させたいのではないでしょうか。 でしたら、このIf文はEndifの後に持ってくるべきだと思われます。(何れにせよ、現在行数が2以下ならばそれ以降は実行されません)
下の方は、Ifの条件に合致したときだけEndifを実行させたいのでしょうか? それは無理です。そのIfに対応するEndifだと判断されるからです。 おそらくですが、これもEndifの下にIfを入れてもそのまま動作すると思われます。
それから、PaintStringの下にあるReturnは、おそらくRefreshではないでしょうか?
また、Stopのラベルの最後のRefreshは逆にReturnではないかと思います。これだと、どこからも戻れず、エラーになります。
他、Call中にGotoを使った場合に正常に動作するかわからないので追記しておきます。正常に動くなら特に必要はありません。 TextScrollからTextStartへのGotoは必要ありません。その下のReturnともども削りましょう。 StopへのGotoですが、Stopの命令をIf文の中に入れてしまえばそれで済むように思います。 TextStart中のGotoは、Do〜Whileコマンドを使えば問題ありません。Whileの条件式に、絶対に満たされない条件を書いておけばよろしいかと。
とりあえず見ていて思いついた点は以上です。 それでは。
|