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

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

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

■21913 / inTopicNo.1)  同一ファイルを複数回インクルードする
  
□投稿者/ ルドロフ -(2010/02/16(Tue) 08:40:11) [ID:zC3ToynL]
    タイトル通りですが、その方法はどうすれば実現できますか?

    一度読み込まれたファイルを消す場合はどうすればいいのでしょうか。

    というのはファイルを読み込んだ後で
    イベントコマンドで書き換えた後、
    その書き換えた状態のファイルを読み込みたいのです。
    汎用的に使う処理を書いてあるファイルなので、
    ファイル名は変更したくないです。
    もし変更するしかないというのであれば別の方法を考えるしかありませんが。

引用返信/返信 削除キー/
■21917 / inTopicNo.2)  Re[1]: 同一ファイルを複数回インクルードする
□投稿者/ あかんべえ -(2010/02/18(Thu) 20:09:32) [ID:xZ5lx5Bg]
     「処理を書いてあるファイル」ということは、イベントファイルですね。たぶん無理かと思います。

     ただ、可能であってもイベントファイルの自動書き換えはやめておいたほうが良いかと。バグはなくても、ハードディスク不調などプレイヤー側のトラブルでファイル内容が滅茶苦茶になる可能性があるので。プレイヤーがファイルを書き換えることもありますし。

     詳細は書き換え内容によりますが、可能な限り書き換え内容を変数化するなどの方法がベターです。

引用返信/返信 削除キー/
■21919 / inTopicNo.3)  Re[2]: 同一ファイルを複数回インクルードする
□投稿者/ ルドロフ -(2010/02/19(Fri) 04:53:48) [ID:zC3ToynL]


    テストロス詳細情報:
    Local 結果
    Switch Args(1)
    Case 1
        Switch Args(2)
        Case アサッケー
            結果 = ワウ
        Case マッキー
            結果 = ドドロス
        EndSw
    Case 2
        Switch Args(2)
        Case アサッケー
            結果 = バケラッタ
        Case マッキー
            結果 = モス
        EndSw
    EndSw
    Return 結果



    私が挿入しようとしているインクルードファイルは
    上に示したようなファイルです。

    カンマ区切りのCSV(敷島MIDIパックのリストに使われているようなファイルです)
    で予め扱うデータを定義しておき、そのデータをもとに上のようなインクルードファイルを
    サブルーチンで作成しています。

    書き換える場合は元になるCSV自体を書き換え、
    そのインクルードファイルを作成するサブルーチンにかけます。

    上のインクルードファイルを作成する場合のCSVはこうなります。

    テストロス,アサッケー,マッキー
    1,ワウ,ドドロス
    2,バケラッタ,モス

    それでも元のCSVを書き換えられてしまったら終わりのような気がします。

    とりあえず同じイベントファイル中では
    同じ名前のファイルのインクルードは一度しか行えないということでよろしいですか?
    私はここがよくわかりません。
    インクルードはできるのに逆に消すことができないというのもなんだか変な気がします。
    理由があるのでしょうか。

引用返信/返信 削除キー/
■21920 / inTopicNo.4)  Re[3]: 同一ファイルを複数回インクルードする
□投稿者/ あかんべえ -(2010/02/19(Fri) 18:04:44) [ID:CkD7twMm]
    2010/02/19(Fri) 18:34:40 編集(投稿者)

     あかんべえです。

    1.まず、
    > とりあえず同じイベントファイル中では
    > 同じ名前のファイルのインクルードは一度しか行えないということでよろしいですか?
    > 私はここがよくわかりません。
    > インクルードはできるのに逆に消すことができないというのもなんだか変な気がします。

     いや、インクルードは複数回できるけど、前回の内容が削除されずに多重インクルード状態になる、ということです。

    2.イベントファイル自動書き換えの危険性について、改めて。
     特に危険なのは、文字通りの「書き換え」というか、イベントファイルの特定行や特定行の特定の位置の文字を書き換える場合です。この場合は、トラブルやプレーヤーの加筆によって、書き換え位置がずれる可能性もあるので危険、ということです。
     そうではなく、
    ・ 古いファイルを削除し、新しい同名ファイルを作る場合
    ・ ファイルの末尾に新しいサブルーチンなどを「追加」する場合
    は、それほど危険ではありません。が、この場合も、やはり外部入出力ですので、プログラムはややこしく、実行時間のかかるものになります。なので、他に方法がないときに限るのが原則と思います。
    (書き換え・ファイル入れ替え・追加のどれを意図されているのか、ちょっとわかりませんでした)

    3.ご説明を読む限りでは、インクルードファイルを書き換える必要はないように思えます。

     代わりの手順は、
    (1) LineReadコマンドなどを使い、CSVを読み込んで各データを配列変数に入れる。
     たとえば、
    セット名[現セットナンバー] に "テストロス"
    種別[現セットナンバー, 1] に "アサッケー"
    種別[現セットナンバー, 2] に "マッキー"
    結果[現セットナンバー, 1, 種別[現セットナンバー, 1]] に "ワウ"
    結果[現セットナンバー, 1, 種別[現セットナンバー, 2]] に "ドドロス"
    結果[現セットナンバー, 2, 種別[現セットナンバー, 1]] に "バケラッタ"
    結果[現セットナンバー, 2, 種別[現セットナンバー, 2]] に "モス"
    を入れるとします。

     もし「テストロス」以下のデータセットが一度に一つだけしか有効でないのなら、「現セットナンバー」は必要なく、少し簡略になります。

    (2) 現セットナンバー・ケース番号(1, 2)・種別値(アサッケー, マッキーなど)から結果値を呼び出すサブルーチンを作ります

     # Args(1)は現セットナンバー、Args(2)はケース番号
     # Args(3)は種別値 結果が存在しなかったら -1 を返す
     詳細情報:
     If IsVarDefined(結果[Args(1), Args(2), Args(3)]) = 1 Then
      Return 結果[Args(1), Args(2), Args(3)]
     Else
      Return -1
     EndIf
     Return

     これで、サブルーチン「テストロス詳細情報」およびそのバリエーションと同等のことができると思います。
     なお、CSVデータの作成方法が明示されてないので断言はできませんが、CSVの書き換えも不用かもしれません。

引用返信/返信 削除キー/
■21926 / inTopicNo.5)  Re[4]: 同一ファイルを複数回インクルードする
□投稿者/ ルドロフ -(2010/02/20(Sat) 11:07:10) [ID:zC3ToynL]
    2010/02/20(Sat) 11:08:05 編集(投稿者)

    私は変数の領域を圧迫したくなくてインクルードファイルの方法をとりました。
    処理速度は長いですが、私の案なら32767以上の要素を扱うこともできます。
    結局他に方法はないということでしょうか。

    なんだか納得いきませんが、とりあえず解決とさせていただきます。

    一応他の方法があれば遠慮なく返信してください。
    私は大歓迎です。
解決済み!
引用返信/返信 削除キー/
■21935 / inTopicNo.6)  Re[5]: 同一ファイルを複数回インクルードする
□投稿者/ あかんべえ -(2010/02/22(Mon) 08:29:13) [ID:jmqVMpTB]
    > 処理速度は長いですが、私の案なら32767以上の要素を扱うこともできます。

     一応指摘しておきますが、変数の数の限界(正確に言えば「セーブデータの変数に割り当てられる行数」の限界。値は 32766)への対策になるのは外部データファイルだけですよ。問題は「変数の数」なのだから、過剰な変数を外部ファイルに逃がしてその一部を必要時に読み込めばよいだけの話です。イベントファイルの書き換えは問題解決に関係ありません。
引用返信/返信 削除キー/
■21937 / inTopicNo.7)  Re[6]: 同一ファイルを複数回インクルードする
□投稿者/ ルドロフ -(2010/02/22(Mon) 17:16:55) [ID:zC3ToynL]
    確かにそのようですね。

    私も以前作成した方法で解決しました。
    これで本当に解決です。ありがとうございました。

解決済み!
引用返信/返信 削除キー/



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

このトピックに書きこむ

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

Pass/

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

- Child Tree -
- Antispam Version -