2012年3月30日金曜日

HSPエラー一覧

このページは、HSPのエラー番号の意味と対処のコピーです。
HSPエラー1システムエラーが発生しました 「システム」となってはますが、HSPエラー2~41として定義されてない問題が起きた場合にこれが表示されるようになってます。基本的には処理に問題がある何かしらのコーディングミスがあると考えてください。
HSPエラー2文法が間違っています 読んで字のごとくです。HSPヘルプブラウザで命令や関数の説明をよく確認して、パラメータを間違えてないか確認してください。また、「HSP」+「(命令・関数名)」のようなキーワードで、GoogleYahoo!で検索すればサンプルもヒットするはず。(ただ、HSP2時代のソースコードもあるので注意)
HSP拡張プラグインの命令を利用しているならば、そのプラグインのヘッダーファイル(「*.as」ファイル)をスクリプト内でちゃんとインクルード(#include命令)してるか確認を。
HSPエラー6パラメータの型が違います
HSPには整数値型、文字列型などがありますが、命令や関数のパラメータで指定すべき「型」(かた)が間違ってます。たとえば、pos命令は整数値、または整数値が代入されてる変数を指定しないといけません。ここで「"」(ダブルクオート)で括られた文字列、または文字列が代入されてる変数を指定するとエラーです。
特に数字は注意が必要で、整数値としての数値なのか、文字列としての数値なのかを間違えないようにしてください。(int関数を使えば文字列の数字を整数値に変換可能、型をチェックできるvartype関数もある)
HSPエラー7配列の要素が無効です
配列変数がらみで何かしらの問題がある場合に表示されます。dim命令やsdim命令での、変数のバッファ確保も忘れずに(→エラー番号20)。
HSPエラー8有効なラベルが指定されていません
ラベル名「*~」がらみで何かしら問題があります。打ちミスなどで存在しないラベルを指定してる、ラベル指定のパラメータを忘れてる。
HSPエラー9サブルーチンやループのネストが深すぎます repeat-loop命令のループ処理に問題があります。ネストは「(ループの)深さ」のことです。ループを強制的に抜ける場合はbreak命令、ループの先頭に戻る場合はcontinue命令を利用し、一時的に抜ける場合はgosub命令やbutton命令(gosubタイプ)を利用します。ループ中にgoto命令やbutton命令(gotoタイプ)の処理を絶対に行わないようにしてください。
HSPエラー10サブルーチン外のreturnは無効です サブルーチン処理を行うgosub命令は、ジャンプ先で必ずreturn命令で処理を戻す「gosub~return」の組み合わせが必要です。goto命令やbutton命令(gotoタイプ)の処理でサブルーチンの途中から抜けだしてしまうような誤った処理です。
HSPエラー12ファイルが見つからないか無効な名前です
何かしらのファイル読み込み処理やフォルダ関連の処理で、指定の場所に読み込みたいファイルが存在しない場合に表示されます。
HSPエラー13画像ファイルがありません
画像ファイルを読み込んで表示するpicload命令の処理で起こります。
HSPエラー14外部ファイル呼び出し中のエラーです
外部プログラム(実行ファイル)を起動するexec命令に問題があり、起動実行に失敗してます。何かしらパラメータの指定ミスがあるか、無効なパラメータを指定してると考えられます。
HSPエラー16パラメータの数が多すぎます
読んで字のごとくです。命令や関数のパラメータ(引数)の数が多すぎます。たとえば、mes命令のパラメータは1つ、pos命令はパラメータは2つです。それよりもたくさんのパラメータを指定してしまうとエラーになります。ヘルプブラウザで命令や関数の説明をよくチェックしてみてください。パラメータの区切りは半角「,」(コンマ)です。「.」(ピリオド)ではありません。
また、if命令で「{ ~ }」の閉じ忘れでもこのエラーが表示されます。
HSPエラー190で除算しました
「除算」とは割り算(÷)のことで、HSPの演算表現で言うと「/」(スラッシュ)、余りを出す「\」(円記号)の部分に問題があります。たとえば『10÷0=?』のように、0で数値を割ることは数学的に不可能なのでエラーになります。
また、「/」か「\」を含む文字列を「"」でくくり忘れてる場合にも表示されます。
HSPエラー20バッファオーバーフローが発生しました
変数の領域バッファのデータが想定したサイズからオーバーフロー(溢れる)した場合に表示されます。コップを1つ用意しといたら、そこにバケツ1杯分の水を注がれたような感じです。
変数の領域サイズをsdim命令であらかじめ確保しておくか、memexpand命令で拡張してください。
HSPエラー21サポートされない機能を選択しました
機能として利用できない処理があります。文字列から数値を演算(減算-、乗算×、除算÷)している、パレットモードのウィンドウでgmode命令(モード3以降)のgcopy命令を行う、axobj命令のActiveXコントロールを利用できない環境、objprm命令で存在しないオブジェクトIDを指定してる、などなど原因は多数あり。
HSPエラー33オブジェクト数が多すぎます
オブジェクトを大量に設置するような処理になってませんか?
HSPエラー38外部DLLの呼び出しに失敗しました HSP拡張プラグイン(*.dll、*.hpi)を実行ファイルと同じ場所(フォルダ)に存在しない時に表示されます。また、拡張プラグインとその拡張命令の定義ファイル(*.as)のバージョンがずれてる場合にも起こりえます。
HSPエラー40関数の戻り値が設定されていません ユーザー定義関数(#defcfunc)で、用意した関数の結果を返すreturn命令にパラメータを指定していません。必ず関数そのものが結果を返すようにしてください。
HSPエラー41関数を命令として記述しています エラー文字列そのまんまです。HSP2時代は命令形式だったものが、HSP3では関数形式に仕様変更したものがあり、書き方が変わったものがいくつか存在します。(strmid関数、int関数、instr関数、rnd関数などなど)
-#Error:SJIS space code error in line (行数) HSP3スクリプトエディタ上でのみ表示されるエラー。通常は目に見えないので気づかない場合がありますが、スクリプト内に全角スペースが含まれてます。コメントアウト内や「"」(ダブルコーテーション)内の文字列以外で、全角スペースがあってはいけません。
HSP3スクリプトエディタの設定で[エディタ]→[表示]に「非文字の可視化」という項目があるので、ここの「全角スペース」にチェックを入れておいておくと、全角スペースを「□」マークで表現してくれるので、エラーを未然に防げます。