[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HSPのFAQ


FAQリスト

HSPに関係するFAQのリストです。
HSP2.xxが中心ですがHSP3以降でも共通する項目があります。
HSP3固有のFAQはHSP3のFAQをご覧下さい。


FAQ

回答できる方で暇のある方は、より分かりやすい回答の追記をお願いします。

2.xx/3.xx

HSPのFAQ:EXEのファイルサイズを節約したい

HSPのFAQ:EXEのファイルサイズを節約したい

HSPのFAQ:EXEにすると起動できない

HSPのFAQ:EXEにすると起動できない

HSPのFAQ:EXEにすると正常に動作しなくなる

HSPのFAQ:EXEにすると正常に動作しなくなる

HSP2のFAQ:エラーメッセージの意味と対処法が分からない

HSPのFAQ:エラーメッセージの意味と対処法が分からない

HSPのFAQ:#includeの動作が良く分からない

HSPのFAQ:#includeの動作が良く分からない

画面がちらついてしまいます。

 cls命令を安易に利用すると起こります。画像を消すにはboxf命令で塗りつぶし、redraw命令を組み合わせることで解決できます。オブジェクトを消すにはclrobj命令を利用して、オブジェクトの内容や状態の変更だけを行いたいならobjprm命令を利用します。

変数をいっぱい使いたい。たくさんの変数をrepeat〜loopで処理したい。

 配列変数を使います。

配列変数って何?

 変数は一つの変数に対して一つの値(数値・文字列など)を入れられるのに対して、配列変数は一つの配列変数に対して同じデータ型(整数型・実数型・文字列型など)なら1個でも100個でもメモリの許す限り値を入れることができます。 配列変数の一つ一つを要素といい、添え字と呼ばれる正数番号で要素を指定して代入したり要素に入っている値を使ったりします。

DLLをEXEファイルに組み込みたい。

 できません。Windows自体の仕様なので、あきらめましょう。HSP3の「HGIMG3」に限って、拡張ランタイム「hsp3hg.hrt」が用意されており、実行ファイル単体での配布ができます。

MP3やMIDIやAVIをEXEファイルに組み込みたい。

 HSPの標準命令のmci命令、mmload命令・sndload命令で、PACKFILEとして組み込んだ音楽や動画を直接再生することはできません(例外はmmload命令・sndload命令でWAVEファイル再生)。必ずPC内にファイルとして存在していないといけません。picload命令の画像ファイルについては、PACKFILE内のファイルをすべて利用できます。

実行ファイルからスクリプトは簡単に読み取られてしまうの? また、読み取られないようにするにはどうすればいいの?

 スクリプトを見るためには専用のツールが必要ですが、一般向けには配布されていないため、一般人が実行ファイルからスクリプトを見ることはほとんど不可能です。

「HGIMG」と「d3module」をいっしょに使いたい。

 拡張プラグイン「HGIMG」はDirectXを使用した描画を行なっています。この上にHSPのline命令などによる通常の描画は行なえません。したがって「d3module」併用による描画はできません。

F5キーでコンパイル実行したときは問題なかったのに、作成した実行ファイルを起動すると、エラー「(38)外部DLLの呼び出しに失敗しました」が表示されます。

 拡張プラグインを使用しているならば、必ずDLLファイルを実行ファイルと同じフォルダに置いてください。DLLファイルはHSPのインストールフォルダに入っていますので、コピーしてきてください。

repeat命令やgosub命令はそれほどたくさん使用していないのにエラー「サブルーチンやループのネストが深すぎます」が表示されます。

 repeat〜loop間をgoto命令で抜けていませんか?break命令を使用しましょう。

画像の拡大は、gzoom命令、gsquare命令、grotate命令どれがいいの?

 まずは自分で試されることをお勧めします。結果を言えば、単純に拡大するだけならgzoom命令がいいでしょう。

うまくpack出来ません。

 ファイル名の制限(長さ8.3形式、半角英数字、日本語不可)に引っかかっていませんか?パックしたいファイルがフォルダに入っていませんか?HSPのPACKFILE機能には、フォルダ構造は存在しません。

四角形以外の形状をしたウィンドウを表示するには?

 「リージョン」という機能を利用することになります。これはWin32 API関数を使用する必要があり、HSPの基本命令では実現できません。

「Win32 API」って何?

 Windows自体が用意している関数群です。user32.dll、shell32.dll、kernel32.dll、gdi32.dllなどのライブラリがシステムに存在しいます。初心者向きの機能ではなく、ある程度プログラミングが上達した上で活用してください。

ベクターやユーザサイトからダウンロードしてきた、○○というプラグインの使い方がよく分かりません。

 同封されている説明テキストやサンプルをよく確認してください。また、プラグインの作者へ問い合わせください。作者が音信不通の場合は、公式掲示板などで尋ねてください。

キーボードのキーを複数同時に押すと認識しないことがある。

 一般のキーボードでは、たくさんのキーを同時に認識することができません。ハードウェアの制限によるものなので、ソフトウェア側からの回避は不可能です。
 複数同時入力を認識できる「Nキーロールオーバー」機能に対応したキーボードを購入することで回避できますが、一般のキーボードよりも割高です。なお、ゲームパッドは基本的に全てのボタンを同時押し認識できるので、これを利用するのもひとつの手でしょう。
Nキーロールオーバー(Wikipedia)、ロールオーバー(Wikipedia)、八幡勇一の「キーボード論」(ITpro)

exist命令でフォルダの存在を確認しても、常にstrsizeに-1が返ります。

 exist命令はファイルの存在を確認するための命令です。フォルダ(ディレクトリ)の存在を確認するには、dirlist命令を使用してください。(p1にはダミーの変数、ファイルマスクにパス文字列、p2にディレクトリのみの5を指定し、システム変数statを確認)

実行ファイルにファイルをドラッグ&ドロップした際のファイルが読み込めない。

 ドラッグ&ドロップしたファイルのパスに半角スペースが含まれていると、ファイルパスが「"」(ダブルクォーテーション)で括られるため、前後の「"」を取り除く処理が必要です。これはWindows NT系OS以降の仕様で、Windows 9x系OSでは括られません。

2.xx

3.xx

rnd命令やgettime命令でエラーが表示されてしまいます。

 HSP2のrnd命令、gettime命令、instr命令、sysinfo命令、int命令、str命令、peek命令、getpath命令、strmid命令などは、HSP3からは関数形式に変更されました。HSP2とは記述方法が異なります。詳しくは、マニュアル「以前のバージョンからの変更点(アップデートガイド) (update.htm) 」などを参照してください。
 HSPスクリプトエディタの[HSP]メニュー→[HSP拡張マクロを使用する]にチェックが入っているか確認してください。

HSPの情報を掲載しているユーザーサイトのサンプルを実行すると、エラーが出てしまいます。

 おそらくそのサンプルは、HSP2用のものだと思われます。HSP2とHSP3では、書式が変更になった部分があるため、そのままでは動かない場合があります。HSP3の書式に書き換えることで解決することがあります。詳しくは、ご覧になったユーザーサイトへ問い合わせてください。

文字をゆっくり表示するためのtext命令(表示スピード設定)が利用できません。

 HSP3では標準命令としてのtext命令は廃止になってます。ただ、commonフォルダ内のhsp3util.asモジュールに代替命令が用意されています。(#include命令でモジュールをインクロードする必要あり)

数値の桁数を揃える、16進数に変換するためのstr関数が利用できません。

 str関数はHSP2のstr命令と違って処理内容も変更されてます。strf関数を利用してください。

拡張プラグインhgimg3.dllが見つかりません。

 マニュアルには誤記載されてますが、hgimg3.dllというHSP拡張プラグインは存在しません。HGIMG3の機能は拡張ランタイム形式で提供されており、実行ファイル単体で配布できます。

関連リンク

FAQかな?と思ったら、ここからたどってください。

公式文書

その他リンク