SRC質問掲示板Mk2
(現在 過去ログ123 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■21523 / inTopicNo.1)  制御限界32766?
  
□投稿者/ ルドロフ -(2009/04/22(Wed) 03:15:56) [ID:nSHW2kvx]
    ハンドルネームが「いちろう」から「ルドロフ」になりました。
    ハンドルネームとしていますが、実はこれは私自身がWiiで自分自身として使用しているMiiの名前です。
    ホームページができるまではMiiの名前で通信します。予めご了承ください。

    本題です。
    32766という制限はどの分野で適用されるのでしょうか。
    今後のためにも知っておきたいのです。お願いします。
    ・「_リスタート.src」の行数
    ・Openコマンドの出力モードで扱うファイルの行数
    ・ローカル変数の数(配列はそのままの数で)
    ・グローバル変数の数(配列はそのままの数で)

    規模の大きなファイルを扱う処理をしている時に
    SRCが自動的に終了した後に
    「オーバーフローしました」が出たり、
    QuitコマンドやGameClearコマンドを記述している行に対して
    「イベントデータが不正です」というエラーが出たりします。
    上記のうちどれか一つが制御限界の32766を超えてしまったためと思われるのですが、
    真偽のほどはどうなのでしょうか。誰か教えてください。
引用返信/返信 削除キー/
■21524 / inTopicNo.2)  Re[1]: 制御限界32766?
□投稿者/ ナオヒラ -(2009/04/22(Wed) 07:46:14) [ID:muXgU0lu]
    私も以前似たようなエラーがでたことがありますが、
    おそらく「一度にロードできるファイル単体ごとの行数」ではないかと。
    メッセージデータを記述し続けて読み込まなくなり、小分けした経験があります。

    ですので、憶測で申し訳ありませんが、これらではないでしょうか。
    >・「_リスタート.src」の行数
    >・Openコマンドの出力モードで扱うファイルの行数

引用返信/返信 削除キー/
■21525 / inTopicNo.3)  Re[1]: 制御限界32766?
□投稿者/ Mr -(2009/04/22(Wed) 11:10:23) [ID:6mnCEzlB]
    32766というのは、SRCが内部で使っているString型変数とIntegar型変数の上限値です。(シナリオ作ってると意識しませんが、プログラムにおける変数には形があり、それぞれ上限とか入るものが違います)
    Integar型変数はターン数などに、String型変数は次ステージなどに使われています。
    今回の場合は、おそらくOpenコマンドへ書き込む文字数が32766を超えていたのだろうと思います。

    1の場合、1行もしくは数行ずつ読み込んで処理してるので、リスタートのファイルが32766を超えていても問題ないかと。

    2は行数ではなく、文字数でしょう。32766行あるということは32766文字を超えているので同じことではありますが。

    3と4は関係ないでしょう。コレクション(連想配列みたいなもんです)を使っていて、コレクションの最大数なんて聞いたことありませんし。3万個程度で枯渇はしないでしょう。いちおうググッてみたら400万個で試したという情報があったので、そのくらいは大丈夫なのでしょう。
引用返信/返信 削除キー/
■21526 / inTopicNo.4)  Re[1]: 制御限界32766?
□投稿者/ あかんべえ -(2009/04/22(Wed) 18:20:07) [ID:ODlSiCPH]
    > ・ローカル変数の数(配列はそのままの数で)

     これはヘルプの Localコマンドのページに明示されており、制限数は 2000 です。
     ただしこれで出るエラーメッセージは「作成したサブルーチンローカル変数の総数が〜個を超えています」になるはずで、オーバーフローエラーなどの表示ではありません。
     これだけは確実なのですが、後は実動テストしないと確実にはわかりません。すみません、ちょっと今時間がとれなくて。


    > ・「_リスタート.src」の行数

     イベントファイルならばファイルごとに 32765 行までです(詳しくは、過去ログ113、No20148のツリー hhttp://www.src.jpn.org/neko/multibbs/cbbs.cgi?mode=al2&namber=20148&rev=&no=2&KLOG=113)。「QuitコマンドやGameClearコマンドを記述している行に対して・・・」と言われるのはこの制限の可能性があります。
     「_リスタート.src」などのセーブデータファイルにも同じ制限が適用されるかもしれません。


    > ・Openコマンドの出力モードで扱うファイルの行数

     Printコマンドのソースコードをざっと見た限り、SRCは1行ごとVBに処理させているようです。したがって制限があるとしたら、VBかWindowsによる制限です。だとすれば、32765は小さすぎるような気が。


    > ・グローバル変数の数(配列はそのままの数で)

     ソースを見た限り、SRC側からはローカル変数のような制限を設けてはいないし、VBも変数の数に制限はなかったと思うので上限はマシンメモリによるものに見えます。断言はできませんが。
     ただしグローバル変数はセーブデータファイルで1行使うので、こちらの制限に先に引っかかりそうです。

引用返信/返信 削除キー/
■21527 / inTopicNo.5)  Re[2]: 制御限界32766?
□投稿者/ ルドロフ -(2009/04/22(Wed) 20:29:17) [ID:nSHW2kvx]
    聞き忘れたのですが、Openコマンドの入力モードでLoadできる行数はどうなのでしょうか。
    変数ではなくLoadできる行数です。やはり32766行なのですか?
引用返信/返信 削除キー/
■21530 / inTopicNo.6)  Re[3]: 制御限界32766?
□投稿者/ Mr -(2009/04/28(Tue) 17:14:53) [ID:6mnCEzlB]
    一行ずつ読み込んでいるなら行数は関係ないと思いますよ。
    そこまで心配なら試してみてはどうでしょうか?
引用返信/返信 削除キー/
■21535 / inTopicNo.7)  Re[4]: 制御限界32766?
□投稿者/ ルドロフ -(2009/04/29(Wed) 12:53:29) [ID:nSHW2kvx]
    的外れな回答かもしれませんが、できませんでした。

    「一行ずつ読み込んでいるなら」の意味がわかりません。
    まとめて読み込んでいてはエラーが出る可能性が高いということでしょうか。

    今現在はFor文を使ってある程度まとめて読み込んでいるのですが、
    エラーが無くなりません。

    1回で1行ずつという意味でしょうか。
    それならば一応は可能ですが、試したほうがいいのですか。
引用返信/返信 削除キー/
■21537 / inTopicNo.8)  Re[5]: 制御限界32766?
□投稿者/ Mr -(2009/04/29(Wed) 14:36:33) [ID:i5S9sUuV]
    一行ずつ読み込んで別の変数に入れていれば、変数サイズは気にしなくて良いということです。
    書き込みの場合はCloseまでの書き込み全てが一つの変数に入っているから3万行以上あれば変数の上限に行ってしまうのでダメだという前提で言っています。

    個人的にそんな大きなデータを何に使うのか興味がありますね。
    現物見ないでごちゃごちゃ言ってても仕方ないんで、良かったら見せてもらえますか。
    そうすれば直せばいいポイントとか指摘できると思うのですが。
引用返信/返信 削除キー/
■21542 / inTopicNo.9)  Re[6]: 制御限界32766?
□投稿者/ Mr -(2009/05/01(Fri) 11:49:14) [ID:i5S9sUuV]
    2009/05/01(Fri) 11:50:37 編集(投稿者)

    ためしにやってみましたが32766行以上読み込んでも問題ありませんでした。
    http://mrsrc.web.fc2.com/OpenRead.eve
    http://mrsrc.web.fc2.com/OpenReadTest.txt
    この二つのファイルでやりました。再現する場合はこのファイルをダウンロードして同じフォルダにおき、OpenRead.eveをSRCで実行してみてください。

    追記
    また、このテストファイルを作るのにOpen&Printを使ったので、書き込みも問題なさそうです。
引用返信/返信 削除キー/
■21544 / inTopicNo.10)  Re[7]: 制御限界32766?
□投稿者/ ルドロフ -(2009/05/02(Sat) 01:23:21) [ID:nSHW2kvx]
    作業場の変数を一つにするのが解決策だったようですね。
    しかし、どうしてそれで解決してしまったのかがよくわかりません。

    正確なところがわからないので、「解決済み」は押しません。すみません。
引用返信/返信 削除キー/
■21549 / inTopicNo.11)  Re[8]: 制御限界32766?
□投稿者/ Mr -(2009/05/03(Sun) 18:52:42) [ID:UbquyOEB]
    特定の条件下での動作に疑問があるのならば、どんなイベントを記述したかを見せてもらえないと判断しようがありません。
    包括的というか一般的な回答を必要とされていたようなので書きませんでしたが。
引用返信/返信 削除キー/
■21551 / inTopicNo.12)  Re[9]: 制御限界32766?
□投稿者/ ルドロフ -(2009/05/04(Mon) 03:26:24) [ID:V7uCxQCK]
    とりあえずの問題は解決しましたので押させていただきます。ありがとうございます。

    実際エラーは出ていません。

    あとは文字数制限だけになったようです。
解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -