よくあるエラーメッセージとその対策

注意:このページは再現困難な事項を含むため、不正確または不必要な記述や抜け落ちがあるかもしれません。(Wiki はすべて大なり小なりそうですが)とりわけこのトピックは加筆・編集をお願いします――書き始め人記す。

一般的なガイド

 SRCエラーメッセージのうち、「セーブ中にエラーが発生しました」と「ロード中にエラーが発生しました」以外の項目はもっぱら自作シナリオ・自作データ向けです。これらのエラーで他の人のシナリオの場合は、シナリオバグ報告掲示板またはシナリオ同梱のreadme.txtなどに指定された方法でご報告をお願いします。
 その他の項目は、自作・他作両方を想定しています。

 このページは Wiki の他のページやヘルプとの重複を避けているため、以下も同時に参照してください。
 各種データファイルの正しい名前と置き場所については、ヘルプの「データの作成」->「データ形式」のページ
 シナリオ関係ファイル・フォルダの正しい名前と置き場所については、ヘルプの「シナリオの作成」->「シナリオの構成」のページ
 自作データ関係のミスについてはQ507
 CreateコマンドのミスについてはQ407
 エラーの発生箇所の特定方法はQ510
 インストール直後のエラーについては導入直後のエラーおよびヘルプの「インストールとアンインストール」->「インストール時のエラーへの対処」
 ファイルの再インストールについては、ダウンロード関連

ユニット・パイロットなどデータ関係のSRCエラーメッセージ

★ 「〜」のデータが見つかりません
★ ユニットデータ「〜」が見つかりません
★ 「〜」というパイロット[ユニット、パイロットまたはユニット]が見つかりません
★ 指定したユニット[パイロット]「〜」のデータが見つかりません
★ データ「〜」のフォルダが見つかりません
  (SRC エラーメッセージ)

 このエラーは、症状によって原因が違います。

 シナリオフォルダ内にあるどのデータも見つからないときには、以下をチェックしてください。


 特定の作品別フォルダにあるデータが見つからないときは、次の場合が多いです。


 特定のユニットまたはパイロットのみにエラーが出るときは、以下をチェックしてください。


 特定のイベントコマンドのみでエラーが出るときは、以下をチェックしてください。


 自作スペシャルパワーでエラーが出る場合は、「アニメ」の指定ミスが多いようです。たとえば、「対象」が陣営全体なのに個別対象のアニメを指定しているなど。


 メッセージ「データ「〜」のフォルダが見つかりません」は、作品別データではなく、イベントファイル読み込み時に出る場合もあります。 この場合は、Continue や Require などそのファイルを呼び出したコマンドでのファイル指定と実際のファイルの置き場所が一致してるかを調べてください。

★ 「〜」というパイロットが定義されていません(SRC エラーメッセージ)

 Talk、AutoTalk コマンドでパイロットに話をさせるときに出るエラーです。
 チェック事項は前項とほとんど同じです。また、非戦闘員またはステージ中にまだ登場させてないパイロットの場合は non_pilot.txt が参照されますので、その記述やファイル名が正しく「non_pilot.txt」になってるかなどをチェックしてください。

★ 〜は出撃していません(SRC エラーメッセージ)

 アビリティ使用時や移動時に出るエラーです。
 このエラーになるのは、(ザコ)または(汎用)パイロットに対する Move コマンドなどをメインパイロット名で指定したたため、正しく特定できないときが多いようです。ユニットIDまたはそのユニットに固有なグループIDをお使いください。

★ 「〜」はユニットに乗っていません(SRC エラーメッセージ)

 これはおもに以下の場合に起こります。

★ ユニット「〜」にパイロットが乗っていません
★ 指定されたユニットにパイロットが乗っていません
  (SRC エラーメッセージ)

 一つ目のエラーメッセージは、ユニットからメインパイロットを参照しようとしたところ、パイロットが存在しなかったときに表示されます(イベントコマンドで参照する記述をした場合だけではなく、SRC本体によって自動的に参照された場合も含みます)。
 二つ目の「指定された〜」というメッセージは、RemovePilot コマンドでパイロットが存在しなかったときに出されます。

 これらのエラーのおもな原因は、次のものです。

★ 〜というパイロットは既に登録されています(SRC エラーメッセージ)

 このエラーのおもな原因と対策は以下の通りです。

★ 〜はすでに出撃しています(SRC エラーメッセージ)

 Launch コマンドで出るエラーです。このエラーは、次の場合に出ます。
 出撃中のパイロット・ユニットをLaunchさせたとき。
 メインパイロット名称に「(ザコ)」も「(汎用)」も付いてなく、グループIDも設定されていないユニットを複数出撃させたとき → パイロットの名称指定に「(ザコ)」か「(汎用)」を付けてください。
 また、パイロットが出撃するイベントの直前のイベント末尾に「Exit」がないため、出撃コマンドが複数回実行されてしまうミスもあります。

★ 〜のデータが不正です(SRC エラーメッセージ)

 データ読み込み時のエラーです。Q507を参照してください。

★ 〜は強制的に退却させられた。(SRCメッセージ)

 このメッセージは必ずしもトラブルではなく、
・ ユニットが活動限界時間切れになったとき
・ 付加された移動能力が切れたとき、進入禁止の座標にいた場合
・ ユニットが変形させられたが、変形先の形態で進入禁止の座標にいた場合
などでも表示されます。

 このメッセージが作者の意図しないトラブルを表すのは、たいてい、ユニット出撃時です。出撃時には、ユニットデータの「移動可能地形」がマップ左上隅(1,1)の地形クラスに適合するかどうかをチェックされますが、これに引っかかるケースです。
 特によくあるのは、移動可能地形「宇宙」への誤解です。これは、「宇宙でのみ移動が可能」を示すものです。「宇宙で移動が可能」ではありません。したがってこの移動可能地形が設定されたユニットを地上マップで出撃させようとしたら(たとえ同時に「陸」などが設定されていても)強制退却となります。
 移動可能地形で、「陸」を「地」とまちがえるケースもあります。

★ スタートイベントが定義されていません(SRC エラーメッセージ)

 スタートイベントが書かれてないか、イベントラベルが正しく読み込めれなかったときに出るメッセージです。
 このエラーは、プロローグイベントが終了した直後、プロローグ以外のイベントが解析される前にチェックされます。なので、プロローグイベント以外のイベントコマンドはこのエラーとは無関係です。

 よくあるミスは、以下の二つです。

(1) スタートイベントラベルの書式ミス
・ 「スタート:」の「スタート」は全角、「:」は半角です。
・ まれに、「ー」(長音)を「−」(マイナス)、「―」(ダッシュ)、「一」(漢数字)、「‐」(ハイフン)などとまちがえるケースもあります。

(2) 改行コードの形式か文字コードが SRC に適合していない
 SRC が正常に読み込める文字コードセットは、shift_JIS と呼ばれるものです。 EUC、Unicode など他の文字コードセットのテキストは文字化けします。
 また SRC では、改行コードは 「CR + LF」(Windows での標準)でなければなりません。改行コードは、UNIX系では「LF」、Mac では「CR」が使われており、イベントラベルの直前の改行コードがこれらの場合、ラベルが正常に読み込まれません。

 たいていのテキストエディタでは、「名前を付けて保存」ダイアログの「ファイル名」「ファイルの種類」の下に「文字コードセット」「改行コード」の欄があります。これらの欄をそれぞれ「SJIS(または SHIFT-JIS など)」・「CR+LF」に指定してからファイルを再保存してください。ただし、Windows 付属の『メモ帳』はこの機能が不完全なので、他のエディタで直してください。

★ ラベルの引数の括弧の対応が取れていません(SRC エラーメッセージ)

 このエラーは、文字通りラベル引数の式でカッコの対応が取れていない(片方を全角にしてしまうなど)場合のほか、
イベントファイルを「JISコードセット」で保存してしまった場合に出ます。この場合は、「★ スタートイベントが定義されていません」の (2) を参照してください。

 カッコの対応ミスの防ぎかたは、Q516.の該当箇所を参照してください。

サブルーチン関係のSRCエラーメッセージ

★ サブルーチン「〜」が見つかりません(SRCエラーメッセージ)

 このエラーは、戦闘アニメ再生用サブルーチンが見つからなかったときに表示されます。
 エラーメッセージ冒頭に「指定された」との語句がある場合は、次項を参照してください。

 このエラーに対しては、アニメ呼び出しの書式が正しいかチェックしてください。
 見つからなかったサブルーチンが自作なら、ファイル名か置き場所、またはサブルーチン名がまちがっている可能性もあります。
 エラーを起こした戦闘アニメが汎用戦闘アニメの場合は、次項(4)を参照してください。

★ 指定されたサブルーチン「〜」が見つかりません
★ サブルーチンの呼び出し先ラベルである「〜」がみつかりません
★ ラベル「〜」がみつかりません
  (SRC エラーメッセージ)

 ラベルの呼び出し時に起こるエラーです。
 最初の二つのメッセージはサブルーチンコール、「ラベル〜」は Goto コマンドでの呼び出し時に起こります。
 これらのエラーが起こるおもな原因は、以下の通りです。

(1) コマンド名や変数名を書いたつもりがスペルミスなどがあり、サブルーチン名と解釈されてしまった。

(2) サブルーチンラベルの書式がまちがっている。

(3) サブルーチンがインクルードファイルにある場合、
 (3.1) そのファイル名がまちがっている。
 (3.2) インクルード読み込みの指定「< >」がまちがっていたり、書き忘れている。
 (3.3) インクルードファイルの置き場所と読み込み指定があっていない。

(4) サブルーチン名が「AttackDemo」「PlayEffect」なら汎用データの戦闘アニメ関係サブルーチンです。「戦闘アニメ_〜」の場合もその可能性が高く、「SpecialPowerAnime」や「SPアニメ_〜」などならおそらく汎用データのグラフィック集のサブルーチンです。これらの場合は、上記(3)のほか、汎用データのバージョンが古い、または汎用データフォルダの置き場所がまちがっている可能性があります。最新のものを、ヘルプの「インストールとアンインストール」->「SRCのインストール」に書かれている通りに、インストールしてみてください。
 また、これらのサブルーチンは、自作イベントの Exit, Return 抜けや自作データのミスなど、思わぬ場所のミスの影響を受けることもあります。
 これらをチェックしてもなおエラーが出、汎用データのバグの可能性が高い場合には汎用データコーナーにてご報告をお願いします。

 エラーメッセージ冒頭の、「指定された」の語句がない場合は前項を参照してください。

★ サブルーチンの引数の総数が〜個を超えています
★ 〜階層を越えるサブルーチンの呼び出しは出来ません
★ サブルーチンの呼び出し階層が〜を超えているため、イベントの処理が出来ません
★ 作成したサブルーチンローカル変数の総数が〜個を超えています
  (SRC エラーメッセージ)

 たいていの場合、Call で呼びだされたサブルーチンから Goto で外に出たことによります。Callサブルーチンは Return しないと終了しません。終了しないとそのサブルーチンで使う引数やローカル変数、サブルーチンの呼び出し元情報などをメモリから解放できません。そのうち、SRC が用意したメモリ領域が足らなくなり、エラーメッセージが出ます。Callサブルーチンは必ず、Return で終了するようにしてください

 このほか、
(1) ローカル変数などの作りすぎ
(2) 再帰サブルーチン(自分自身を呼び出すサブルーチン)で再帰回数が多すぎた
(3) 複数のサブルーチンがお互いを呼び出しあって無限ループになった
などの理由でエラーになることもあります。

 意図せずに無限ループを作ってしまうこともあります。
(1) イベントの最後の「Exit」、サブルーチンの最後の「Return」が抜け落ちてないか
(2) エピローグイベント内で Continueコマンドを使っていないか
などをチェックしてください。

 バージョン2.2.15 では、それぞれの最大値は以下の通りです。
呼び出し階層数・・・・・・・・・・・・・・ 50
引数の数・・・・・・・・・・・・・・・・・・・ 200
サブルーチンローカル変数の数・・2000

ファイル関係のSRCエラーメッセージ

★ セーブ中にエラーが発生しました(SRCエラーメッセージ)

 このエラーのおもな原因と対策は、以下の通りです。

★ ロード中にエラーが発生しました(SRCエラーメッセージ)

 考えられる原因と対策は以下の通りです。

★ データ「〜」のフォルダが見つかりません
★ 〜が開けません。
  (SRC エラーメッセージ)

 以下がよくある原因です。
(1) Data フォルダ名のミス。"Date"、"Deta"、全角で "Data" などになってしまっている。この場合、どの作品のデータも同様なエラーが出るはずです。
(2) Data フォルダ内の作品別フォルダの名前と、.eveファイル内の作品データ読み込み指定「@〜」とが一致していない。または、作品別フォルダが存在していない。
(3) 一つのイベントファイルで32766行を越えるとき、このエラーが出ることもあります。
(4) パイロットまたはユニットの「名称」データに全角「”」を用いると、クイックロード時に「〜が開けません」のエラーが出ます。

★ スタートイベントが定義されていません(SRC エラーメッセージ)
 →「ユニット・パイロットなどデータ関係のSRCエラーメッセージ」の該当する項

★ ラベルの引数の括弧の対応が取れていません(SRC エラーメッセージ)
 →「ユニット・パイロットなどデータ関係のSRCエラーメッセージ」の該当する項

その他のSRCエラーメッセージ

★ Ifに対応するEndIfがありません
★ If[ElseIf]に対応する Then または Exit または Goto がありません
★ Else[ElseIf, EndIf]に対応するIfがありません
★ Loopに対応するDoがありません
★ Doに対応するLoopがありません
★ For[ForEach]に対応するNextがありません
★ Nextに対応するコマンドがありません
★ Switchに対応するEndSwがありません
★ Case[EndSw]に対応するSwitchがありません
  (SRC エラーメッセージ)

 IfやForなどを入れ子にした場合、EndIfやNextはもっとも内側のIfやForのみを終了させます。すべてのIfやForをいっぺんに終了させるわけではありません。

# 以下は、EndIf が足らず、エラーが出ます。
If (条件式1) Then
  If (条件式2) Then
    (処理内容)
EndIf

 「ありません」と言われた当のコマンドを書き忘れた場合はミスを見つけやすいのですが、比較的見つけにくい場合もあります。特に多いのは、「ありません」と言われたところの直前に別の制御構造があり、そこにミスがあるケースです。たとえば以下の例では、「Caseに対応するSwitchがありません」と3回も言われますが、ミスは「Swith〜EndSw」構文自体にはなく、「If〜EndIf」構文の EndIf がないことです。

Switch 選択
Case 1
  If 条件 Then
    (分岐1−1)
  Else
    (分岐1−2)
Case 2
  If 条件 Then
    (分岐2−1)
  Else
    (分岐2−2)
Case 3
  If 条件 Then
    (分岐3−1)
  Else
    (分岐3−2)
Case 4
  (けーす4中味)
EndSw

 これらのミスをふせぐ有力な手段は、「If〜EndIf」や「For〜Next」のあいだの部分を字下げすることです。と言うよりむしろ、字下げのないプログラムは少し複雑になっただけでもバグ発生必死になるとさえ言えます。

 このエラーは、一部の改行コードが Windows標準のものでないために出ることもあります。詳しくはこちらを参照してください。

★ イベントデータが不正です(SRCメッセージ)

 さまざまな文法ミスやデータの書式ミスなどがありえます。ヘルプを参照し厳密なチェックを行ってください。原因はメッセージで指定されたエラー発生箇所にあるとは限らず、それより前のイベントデータやデータかもしれません。また、他のエラー(とりわけ、「〜というパイロットは既に登録されています」)に付随して表示されることも多く、その場合は他のエラーをまず解決してください。

 ありえるミスは多様ですが、過去、以下のミスが報告されています。ただし、以下のミスがあったら必ずこのエラーメッセージが出るとは限らず、最新バージョンで同じメッセージが出るとも限りません。

VBエラーメッセージ

★ 実行時エラー'52' :ファイル名または番号が不正です。(VBエラーメッセージ)

 原因が特定しにくく、やっかいなエラーです。以下はそれで解決されるかもしれない対策です。
(1) ドライブのボリューム名を変えてみる。
(2) SRC.inf をいったん削除する。
(3) (2)の後、VBランタイムを再インストールする。
(4) (WindowsXP以降 または NT のみ)SRC 関連フォルダにアクセス権があるかチェックする。なければ取得する。
(5) 汎用データを削除してから再インストールする。
(6) SRC と関連ファイルすべてを再インストールし、マシン再起動後、実行してみる。

★ 実行時エラー'5' :プロシージャーの呼び出し、または引数が不正です。
★ Run-time error '5' Invalid procedure call or argument
  (VB エラーメッセージ)

 このエラーは、(1)特定のシナリオのみでエラーが出る場合と、(2)多くのシナリオで出るがシナリオごとに発生タイミングが違う場合、(3)どのシナリオでもシナリオ読み込み時にエラーになる場合で、対処法は違います。

 (1)の場合は、シナリオ固有の記述ミスの可能性が高いです。ご自分で書かれたシナリオなら厳重にチェックし、他の人のシナリオなら作者に連絡することをおすすめします。よくあるミスには、次のものがあります。
・ イベントコマンドのパラメータ数が少なすぎる
・ PaintPicture などのグラフィック関係コマンドで、有効範囲外の座標パラメータを設定した
・ コマンドや変数のスペルミスがあるため、サブルーチンとみなされてしまった
・ Pilot.txt、Unit.txt などの記述形式に誤りがある
・ Call や Goto で存在しないラベルを呼び出した――これは、Call・Goto での指定かラベルそのものの記述のどちらかに誤字がある、あるいは、呼び出されるサブルーチンを含むインクルードファイルが読み込まれていない、などにより発生します。
 該当しえるミスの種類はこのように幅広いのですが、どの時点でエラーが発生するかを特定することで、原因を絞り込むことができます。たとえば、ユニット上にカーソルを置いたときにエラーになったのなら Pilot.txt、Unit.txt あたりが怪しい、というように。

 (2)なら、汎用戦闘アニメ・特殊効果データ関係が怪しいです。この場合は、戦闘アニメをオフにしたり、.eve ファイル内のエラー発生箇所周辺の特殊効果呼び出し行行頭に'#'をつけ無効化したりするとエラーにならなくなるので原因が特定できます。この場合、おもなチェック事項は以下の通りです。
・ 汎用データを更新せずに古いままではないか?
・ (あなた自身によるシナリオの場合)汎用サブルーチン呼び出しの書式をまちがえていないか?
・ (あなた自身によるシナリオの場合)その他、上記(1)のミスのチェック。

 (3) なら、Windows の言語設定が日本語以外になってないでしょうか? もしそうなら、Windows のスタートメニューから、
control panel->regional and language setting
(コントロールパネル->地域と言語のオプション)
を呼び出し、言語を japanese(日本語)にしてください。
 また、Src.inf 中の「UseDirectMusic」の on/off を逆にすると直る場合もあります。
 SRC.exe の実行モードが「互換モード」になっているかもしれません。Windows でSRC.exeのアイコンを右クリックし「プロパティ」->「互換性」タブ->「互換モード」の項(WindowsXPの場合です。他のバージョンでは少し異なります)にチェックがあればはずしてください。
 それ以外の場合は、VB5 ランタイムを再インストールしてみてください。

★ 実行時エラー'11' :0で除算しました。(VB エラーメッセージ)

 文字通りゼロで割ろうとしたときに起こるエラーですが、SRC ではイベントファイルでそのような計算をしてしまったときだけでなく、イベントファイルやデータの記述ミスによる場合もあります。このうち特に多いのが武器属性「連」のレベル表記を全角にしてしまうミスや、変数名の書きまちがいなどにより、ゼロを想定していないコマンドパラメータにゼロを入れてしまうなどです。

★ 実行時エラー'9' :インデックスが有効範囲にありません(VB エラーメッセージ)

 このエラーもありえる可能性はいろいろありますが、比較的、パイロットデータ・ユニットデータ・エリアスデータなどの記述ミスによる場合が多いようです。また、スペシャルパワーがゼロ以下のパイロットのスペシャルパワーコマンドを実行しようとしたときや、存在しないデータを操作しようとしたときにもしばしば起こります。

★ 実行時エラー'13' :型が一致しません(VB エラーメッセージ)

 VBエラーの常として、このエラーの原因も可能性は多様ですが、比較的以下の場合が多いようです。

Windowsエラーメッセージ

★ 問題が発生したため、SRC.exe を終了します。ご不便をおかけして申し訳ありません。
★ このプログラムは不正な処理を行ったので強制終了されます。
  (Windows エラーメッセージ)

 このエラーメッセージは、SRC に原因があるかのように表現されてますが、Windows のエラーです。このエラーを引き起こすのはおもに、
(1) メモリ不足など、マシン環境が Windows の想定外の状態になったとき、
(2) SRC の特定の動作を、Windows が受け付けなかったときです。

 おもな対策は以下の通りです。
 (Windows 関係については、ごく基本的なことにとどめます。詳しくは、ネットで検索して調べたり、身近の詳しい人に相談したりしてください)

(1.1) パソコンがメモリ不足かハードディスクの容量不足になってないかチェックしてください。メモリの状態は、Windows付属の「Windowsタスクマネージャー」などで調べることができます。
 メモリ不足の場合、パソコン起動時に余計なソフトが起動されているかもしれません。スタートメニューのスタートアップフォルダなどをチェックしてください。
 たいていの場合、ハードディスクには節約の余地がかなりあります。不要なソフト、ネットブラウザのキャッシュや各ソフトの過去ログ、音声・画像など大容量のデータなどです。Windows XP 以降なら「システムの復元」の設定を変えるのも有力な手段です。
(1.2) グラフィック・音声など特定種類の機能を呼び出したときエラーが出る場合、関連デバイスの不具合がありえます。
(2.1) 特定のコマンドでエラーが出る場合は、SRC 本体の改定で対応できるかもしれません。「どのコマンドでどのような状態でエラーが出るのか」をできるだけ見極めた上で、バグ掲示板にてご報告をお願いします。
(2.2) コマンドのパラメータ抜けやパラメータがヘルプに注記してある許容範囲を超えている場合など、SRCの想定外の記述が原因の場合もあります。よくあるのは、PaintPicture コマンドで画像のサイズが 4の倍数でないケースです。
(2.3) 画像や特殊効果関係のコマンドやサブルーチン呼び出しでパラメータ抜けがあったときこのエラーが出ることもあります。自作品の場合はそれをチェックし、他の人の作品の場合は汎用データが古くないか確認した上で、作者にバグ報告をお願いします。

★ MSVBVM50.DLLが見つかりません など(バリエーションあり)
  (Windows エラーメッセージ)
 Q201.を参照してください。


コメント