HSP3プログラミング入門講座
powered by Let's HSP!
HSPエラー41 「関数を命令として記述しています」
WindowsプログラミングHSP(HSP3)のエラーメッセージ「HSP Error」(HSPエラー)。エラーの番号は「41」。エディタ上のコンパイル実行では『関数を命令として記述しています』のメッセージ。実行ファイルでのエラーメッセージは『内部エラーが発生しました(41)』。
原因は呼んで字のごとく関数形式でコーディングしてない部分があるためです。HSP2時代は命令形式で提供されていたものが HSP3では関数形式に変更されて、書式(書き方)が変わったものがいくつか存在します。HSP2→HSP3のバージョンアップにあたって、 一部の互換を捨てた一環です(HSPのバージョン変遷)。
HSP付属マニュアル『以前のバージョンからの変更点(アップデートガイド) (update.htm)』や、ヘルプブラウザで 関数(旧命令)の説明を今一度確認してみてください。
ちなみに、HSPスクリプトエディタの[HSP]→[HSP拡張マクロを使用する]にチェックはちゃんと入ってますか? デフォルトでは有効になってるんですが、チェックが入ってないとコーディングミス以前にHSPエラーが表示される場合が多いです。(HSP 3.2以降では、このメニュー項目は撤廃されてます)
関数形式に切り換わったもの
元命令形式だったものをテキトーに挙げると、strmid関数、rnd関数、peek関数、wpeek関数、strlen関数、sysinfo関数、dirinfo関数、 getpath関数、instr関数、int関数、str関数などです。HSP2ではこれらの命令の第1パラメータに取得した結果を返すための変数を指定してましたが、関数形式になった ことで、関数そのものが結果を返すため不要になりました。
たとえば、乱数を発生させるrnd関数を例にしましょう。
従来はパラメータが2つ存在しました。第1パラメータは乱数の結果が返る変数、第2パラメータは乱数の範囲
です。HSP3では関数形式により第1パラメータは不要になるので、乱数の範囲を指定するパラメータだけ
になってます。
// A. HSP2の場合 rnd value, 100 mes value
// B. HSP3の場合 (その1) value = rnd(100) mes value
// C. HSP3の場合 (その2) mes rnd(100)
上の(A)と(B)のコードを比較すると、関数導入の利点にピンとこない人がいるかもしれませんが、 HSP3では(C)のようによりシンプルなコードが書けるようになりました。変数valueに結果をいったん代入する までもなく、そのままmes命令へ指定できます。
例を挙げるときりがないので、他はHSP付属のサンプルで実例をチェックしてくだされ。(^_^)
- strmid関数、instr関数 ... sample\basic\strmid.hsp
- rnd関数 ... sample\basic\line.hsp , sample\basic\stars.hsp
- strlen関数 ... sample\basic\editor.hsp
- sysinfo関数 ... sample\new\sysinfo.hsp (3.2〜ではbasicフォルダ)
- dirinfo関数 ... sample\new\dirinfo.hsp (3.2〜ではbasicフォルダ)
- getpath関数 ... sample\basic\getpath.hsp
☆ str命令とstr関数
多くの旧命令は書き方が変わっただけで処理内容に違いはほとんどありませんが、唯一機能も変更されたのが str関数です。HSP3では数値を文字列に変換する機能のみサポートしていて、それ以外の機能、たとえば16進数 文字列への変換、桁揃えは新規のstrf関数が担います。
- strf関数 ... sample\new\strf.hsp (3.2〜ではbasicフォルダ), sample\basic\str.hsp
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本