More ... | HSP2.6:HSPPROG:プログラミングガイド
スクリプトの形式HSPはプログラム(命令と実行の順序を記したもの)によって動作します。その もとになるのがスクリプト(ソースファイル)です。これはテキストファイル の形式で、拡張子は .AS になります。スクリプトはHSPに付属しているHSPスク リプトエディタ(HSED2.EXE)や、テキストエディタなどのアプリケーションで作 成することができます。 スクリプトの編集と実行HSPスクリプトエディタ(HSED2.EXE)を使用すると、非常に簡単にHSPのスクリプ トを作成、編集、実行することが可能です。HSPスクリプトエディタを使用した 場合は、
という手順だけで、簡単にHSPのスクリプトを実行して動作を確かめることがで きます。 HSPスクリプトエディタの基本的な使い方HSPスクリプトエディタ(HSED2.EXE)は、HSPのスクリプト編集用のエディタです 。コンパイルや実行なども自動的に行なうことができます。 HSPスクリプトエ ディタを使用する場合には、HSED2.EXEと同じディレクトリに以下のファイルが 存在している必要があります。
HSPスクリプトエディタは、本体(HSED2.EXE)とHSP実行ファイル(HSP2.EXE) が 必ず同じディレクトリに存在していなければなりません。また、実行ファイル (EXEファイル)を作成するためには、ランタイムファイル(HSPRT)も、同じディ レクトリに必要です。 HSPスクリプトエディタを起動すると、新規のテキスト編集ウインドゥが表示さ れます。あとは普通のテキストエディタと同じように、ファイルをロードした り、セーブしたりしながらHSPのスクリプトを記述していきます。基本的な操作 は、Windowsに付属している「メモ帳」とほぼ同じです。文字列のカット&ペー スト、検索などもメニューから選ぶことができます。 編集しているHSPスクリプトを実行させてみるには、メニューから「コンパイル +実行」を選ぶか、またはファンクションキーのF5を押します。「実行」または CTRL+F5を押すと、最後にコンパイルされたスクリプトを実行します。 コンパイル中にエラーが発生した場合は、コンパイル後にエラーの内容とエラ ーの出た行番号を知らせるダイアログが表示されます。 error xxx in line 15 (HSPTMP) --> ラベルが重複している 上の例では、「ラベルが重複している」エラーが行番号15で発生したというこ とを示しています。エラーが発生した場合は、「カーソル」メニューの「指定行に 移動」(またはCTRL+J)を選んで、エラーが発生した行へ移動してその内容を チェックしてみてください。 一般的な使い方としては、HSPスクリプトエディタで編集、実行を繰り返しなが らスクリプトを作成して、完成したらメニューから「実行ファイル自動作成」 ([Ctrl]+[F9])を使って完成したスクリプトを EXEファイルやSCRファイル(スク リーンセーバー)に変換して1本のソフトができあがります。 HSPのスクリプトエディタでは、以下のファイルを実行時に作成します。これら のファイルは、コンパイル時にのみ必要なファイルなのでスクリプトができあ がった時には削除してかまいません。
スクリプトエディタのドラッグ&ドロップについてソーススクリプトのアイコンを、HSED2.EXEのアイコンの上かまたは、ウインド ゥ内にドロップするだけで編集をすることができるようになっています。 ソーススクリプトがドロップされると、そのソースファイルが格納されている ディレクトリがカレントディレクトリとなります。 より便利な使い方としては、「.as」という拡張子を「HSED2.EXE」と関連付け しておけば、「.as」の拡張子を持つファイルをダブルクリックするだけで、ソ ースを開くことができるようになります。 また、デスクトップに「HSED2.EXE」のショートカットを置いておき、そこにソ ーススクリプトをドロップするような使い方も可能です。 スクリプトエディタの「外部ファイル実行」ボタンの使い道外部のテキストエディタでHSPのソースファイルを編集したものを手軽にコンパ イル+実行させるために、スクリプトエディタでは「外部ファイル実行」のボ タンがツールバーの一番右端に用意されています。これにより、使い慣れた他 のテキストエディタを使いHSPのスクリプトを記述することが比較的容易になり ます。主な作業手順は以下のようになります。
このような手順で、外部のエディタでスクリプトを編集することができます。 この場合、 HSPスクリプトエディタは、コンパイル+実行をするためのランチ ャーのような状態だと考えるといいでしょう。ウインドゥのサイズを小さくし て、編集部分をなくしてしまえば画面上にコンパクトに配置することが可能で す。 スクリプトエディタの「ラベル一覧」についてver2.55よりスクリプトエディタの「カーソル」メニューに「ラベル一覧」 ([F11])が追加されました。 [F11]を押すと、現在編集中のスクリプトに含まれ るラベルの一覧がリストボックスに表示され、任意のラベルを選ぶことでダイ レクトに該当する行にジャンプすることができます。スクリプトが大きくなっ て移動が不便な場合や、どのあたりにラベルを振ったか忘れてしまった時など に便利です。 ワンキーヘルプ機能についてスクリプトエディタで編集している文字列から、HSP命令のヘルプをボタン1つ で呼び出す機能が「ワンキーヘルプ機能」です。 使用方法は、調べたいキーワードにキャレット(エディタ内のカーソル位置)を 合わせて、 [F1]キーを押すだけです。 該当する命令の説明、パラメータの意味などが表示されます。もしキーワード に該当するヘルプがなかった場合は、アルファベット順のキーワード検索ヘル プが表示されます。 サンプルスクリプトが何をしているのかを調べる時、命令の詳細が思い出せな い時などに便利な機能です。 ワンキーヘルプは、いくつかの表示方法を選ぶことができます。標準では、HSP ヘルプマネージャによるヘルプ閲覧に設定されています。 HSPスクリプトエディタでは、この他にもhtmlによる表示、Windows HLP形式に よる表示や、HSPヘルプマネージャによる表示など、4つの形式をサポートして います。 (HSPヘルプマネージャ形式以外は、対応するヘルプデータを別途用意 して頂く必要があります)
ヘルプのデータは、通常はスクリプトエディタ(HSED2.EXE)の下にある、 hsphelpというディレクトリに格納されています。もし、他のディレクトリに移 したい場合や、ヘルプ表示をしようとした際にエラーが出る場合は、「ヘルプ 」→「HSPヘルプ設定」メニューを選択して、ヘルプデータのディレクトリを再 設定してください。(たとえば、「c:\hsp26\hsphelp」など) 入力が空白の場合は、HSED2.EXEの下にあるHSPHELPというディレクトリを参照 します。 HSPヘルプツールについて[hsp_hman] HSP Help Toolsは、HSPの関連ユーティリティーです。これにより 、HSPのワンキーヘルプで表示されている、命令ごとの説明データの追加、更新 、削除などを簡単に行なうことができるようになります。 また、html形式だけではなくテキスト形式での出力などのオプションも用意さ れています。 HSP Help Tools本体は、HSPで作成されており、ソースも提供されているので、 ツール自体のカスタマイズはもとより、作成されるhtmlの内容に手を加えたり 、別な形式での出力に対応させることも可能です。 ヘルプのためのデータ入力ツールや、ヘルプデータにアクセスするためのモジ ュールなども同梱されているので、ユーザーによるヘルプの構築も容易です。 HSP Help Tools本体は、「HSPHELP」ディレクトリに収録されています。 HSPのエラースクリプトの書き間違いや、指定のミスなどでHSPの実行中にエラーを発見 した時には、エラーコードとエラー行番号が表示されるようになっています。 ダイアログが出て、 HSP : error code nn in line xxx --> エラーメッセージ のような表示が出た時は、スクリプトのxxx行がコードnnのエラーだということ を示しています。エラーコードとメッセージの関係は次のようになっています 。
HSPのしくみHSPは、以下のような流れでスクリプトを実行しています。
ソーススクリプトのコンパイルは、瞬時に行なわれオブジェクトファイルを作 成します。オブジェクトファイルは、ソーススクリプトの余計な部分、コメン トなどを排除してコンパクトに、そして高速に実行できる形式になっています 。 HSP本体は指定されたオブジェクトファイルを読み込み実行するための核となる 部分です。これはHSP2.EXEですべて行われますので、それ以外に余計なDLLやモ ジュールは必要としません。もちろん、HSP2.EXE本体には、サンプルデモのデ ータやスクリプトは入っていません。スクリプトを最低限動作させるだけの部 分なのです。 もし、あなたがHSPで作ったソフトを配布したいと思ったら、単体で実行できる EXE(実行) ファイルを作成することができます。EXEファイルを作成すると、そ のファイルをダブルクリックするだけでスクリプトが動作するようになります 。オンラインソフトや同人ソフトとして配布する際には便利な機能です。 EXEファイルやスクリーンセーバーモジュールを作成する時には、オブジェクト ファイルが必要になります。その際には、スクリプトエディタの「オブジェク トファイル作成」や、「START.AXファイル作成」のメニューを使います。詳細 は、次の項を参照してください。 バッチファイルやコマンドプロンプトから直接HSP2.EXEをファイル名指定付き で実行させることもできます。 hsp2 demo.ax のように入力すると、"demo.ax"というオブジェクトファイルが実行されます。 EXE,SCRファイルの作成方法HSPでは、ユーザーが作成したスクリプトや、そこで使用されるデータファイル などを、ひとまとめにしてEXEファイルを作成することができるようになってい ます。また、EXEファイルの一種であるSCRファイル( スクリーンセーバーモジ ュール)も同じ手順で作成できます。 ver2.6からは、実行ファイルの作成をより手軽に行なうことが可能になってい ます。スクリプトエディタから現在編集中のファイルをEXEファイルに変換する 場合には、メニューから「HSP」→「実行ファイル自動作成」を選択するか、「 CTRL」+「F9」を押すだけでカレントディレクトリに実行ファイルが作成されま す。実行ファイル自動作成のオプションを指定することも可能です。詳しくは 、「実行ファイル自動作成について」の項を参照してください。なお、ver2.55 まで行なっていた手作業での実行ファイル作成も可能です。こちらの方法は、 以下の通りです。 マニュアルでEXEファイルを作成するための手順。(Ver2.55互換の方法)
EXEファイルやSCRファイルを作成するには、必ずPACKFILEが必要になります。 PACKFILEとは、複数のファイルをひとまとめにして、EXE, SCRファイルの中に 埋め込むための定義ファイルです。PACKFILEで指定されたファイルは、スクリ プトからは使用できますが、外部からは見えなくなります。これには次のよう な効果があります。
この機能を使えば、EXEの中に埋め込まれた画像ファイルやデータファイルなど を使うことができ、1ファイルだけの画像や音声を使ったソフトを作ることが できます。(ただしMIDIファイルやDLLなど一部のデータファイルは埋め込むこ とができません。また、埋め込んだファイルの内容を変更して上からセーブす ることはできません) もちろん、スクリプトで使用されているすべてのデータファイルを EXEの中に 埋め込む必要はありません。必要だと思ったものだけを、埋め込み、それ以外 は通常の外部ファイルとして置いておいても問題ありません。ただし、最初に 実行されるスクリプト「start.ax」だけは必ず埋め込んでおく必要があります ので注意してください。「start.ax」というオブジェクトファイルは、スクリ プトエディタのツールメニューで「START.AXファイル作成」のメニューで作成 することができます。 PACKFILEは、スクリプトエディタの「PACKFILE編集...」で簡単にファイルを選 択して編集することができます。ただし、ここで指定するファイル名はスペー スを含まない半角で11文字以内のMS-DOSファイルネームでなければなりません 。 HSPでは、次のような順序でファイルのロードを行なっています。
EXEファイルを作成し終わったら、まず必要最低限と思われるファイルだけを、 新しく作ったディレクトリに移して実行できるかどうかを確認しておくといい でしょう。通常作業を行なっているディレクトリには、EXEに埋め込む前のファ イルがカレントディレクトリに置かれているので、PACKFILEで指定を忘れてフ ァイルが埋め込まれていない場合でも、正常に動作してしまうためです。 「外部ファイル実行」を使用している場合は、「オブジェクトファイルのみ作 成」のチェックボックスをONにしてから、外部ファイル実行をすることで、オ ブジェクトファイルの作成が可能です。 ver2.6から、EXEファイルに埋め込まれたファイルが正規のものかをチェックす る機構が導入されています。これにより、ウィルス感染されたファイル実行を 防止したり、ファイルを不正に書き換えることが困難になっています。ただし 、これによりUPXなどのソフトを使ってEXEファイルそのものを圧縮した場合に エラーが発生してしまいます。 HSPからUPXなどを使用する場合には、ファイル 正規チェックを外したランタイムバージョンを使用するか、オンラインで公開 されているHSP用のUPX対応ソフトをご利用下さい。詳しい情報は、HSPのオフィ シャルページを参照してください。 PACKFILEの編集について[hsp_pack] 「PACKFILE一覧」ダイアログでは、EXEファイルやSCRファイルを作 成する際に必要なデータファイル群を選択、管理することができます。ここで 選択されたファイルのデータは、PACKFILEというファイル名でカレントディレ クトリに保存されます。まず、メニューから「ツール」→「PACKFILE編集...」 を選んでください。「PACKFILE一覧」のダイアログが出ます。これは、おおま かに次のように分かれています。 ver2.6からは、PACKFILEの指定をスクリプトに記述することが可能になってい ます。詳しくは、「実行ファイル自動作成について」の項を参照してください 。
ファイル選択ウインドゥには、中央のファイルマスクウインドゥ(通常は"*.*") で指定されたファイルだけが表示されます。たとえば、ファイルマスクを "*.AX"とすると、拡張子が"AX"のファイルだけが表示されるようになります。 表示されるディレクトリを変更したい場合は、左下のディレクトリ選択ウイン ドゥをダブルクリックしてください。[..]は、ディレクトリを1つ戻ることを 、[-a-]や[-c-] は、ドライブを意味しています。 PACKFILE一覧に、ファイルを追加するには次のように操作します。
PACKFILEから指定したファイルを除外するには次のように操作します。
PACKFILEの編集が終了したら、「閉じる」ボタンを押してください。選択され た情報ファイルとして、PACKFILEというファイルがセーブされます。 PACKFILE 編集によって、実際のファイルが削除されたりコピーされることはありません 。「キャンセル」ボタンを押すと、ウインドゥが閉じ、いままでの選択はすべ て無効になります。 現在のバージョンでは、PACKFILEは、スペースを含むディレクトリをサポート していません。「Program Files」などのスペースを含むディレクトリ下にある ファイルを指定すると、うまく動作しないことがありますので注意してくださ い。 ver2.55から実行ファイルに含まれるデータに暗号化を施し、外部からの解析や 抜き出しに対処できるようになりました。 暗号化を行なう場合には、スクリプトエディタの「PACKFILE編集」ダイアログ において、PACKFILEに含めるファイルを追加する際に「暗号化」のチェックを ONにしておいてください。PACKFILEに含めるファイル一覧の中で先頭に「+」が つけられファイルは暗号化の対象になります。 ファイルの暗号化は、「start.ax」などのオブジェクトファイルを始めとして 画像ファイルや、テキストファイルなどHSPから読み込まれるファイルすべてに 適用することができます。PACKFILEに含めることのできないファイル、MIDIや 動画ファイルなどは対象にはなりません。 暗号化されたファイルは、bloadなどの命令で読み込んだ場合には、正常な内容 に復号されます。これをbsaveで保存した場合には暗号化されません。 スクリーンセーバーの作成HSPでは、Windows9x/NT/2000/XPで動作するスクリーンセーバーモジュールの作 成が可能です。これは、特殊な命令を使いフルスクリーン画面を作成してそこ に描画された内容がそのままセーバーとなるもので、通常のスクリプトにちょ っと手直しをするだけで作成できます。スクリーンセーバーの詳細については 、サンプルファイルのあるディレクトリ「ssaver」にある、「start.as」ファ イルを開いてみてください。スクリプトの書き方と実際の作成手順、そしてサ ンプルスクリプト本体が書かれていますので参考にしてみてください。 標準の機能では、パスワード保護のないシンプルなスクリーンセーバーが作成 可能です。拡張機能となる、llmod、scrsvrモジュールによりWindows9xのみパ スワード保護ダイアログのサポートを行なうことができますが、 Windows2000 、XPなどNT系マシンでのパスワード保護は、外部プラグインが必要になります のでご了承下さい。 スクリーンセーバーモジュール(SCRファイル)の作成は、色々な約束事がありま す。サンプルのスクリプトなどを参考にしながら、覚えていってください。ス クリーンセーバーの設定画面(ID0)のウインドゥサイズは、通常のHSP実行時と は異なり、スクリーンセーバー作成時に設定されたウインドゥサイズに固定さ れます。必ず、作成時に設定するか、#packopt命令などのオプション指定で正 しいサイズにしておいてください。 起動オプションのパース機能HSPでは、起動オプションを取り込みスクリプトでそれに応じた処理をすること ができます。これにより、色々な機能を持たせた EXEをバッチファイルから呼 び出したり、EXEファイルのアイコン上にファイルをドロップするような処理す ることが可能になります。 この機能をスクリプトエディタ上から試すために、HSPメニューに「起動オプシ ョン...」があります。これを選択すると、スクリプトエディタ上から起動した 時にも、擬似的に起動オプションをつけることができます。実際にスクリプト で起動オプションの内容を調べる場合には、 cmdlineというシステム変数を使 用します。詳しくは、システム変数一覧を参照してください。 フルスクリーン表示機能HSPでは大きくノーマルウインドゥモードと、フルスクリーンモードを選ぶこと ができます。ノーマルウインドゥモードは、通常の Windowsアプリケーション と同じくデスクトップ上に任意の大きさのウインドゥが開いて、それ以外の領 域にはデスクトップ画面が見えています。フルスクリーンモードでは、デスク トップのかわりにユーザーが任意に指定した壁紙をバックにした画面になり、 ディスプレイ全体がHSPの画面となります。HSPのスクリプトが終了しない限り 別のウインドゥアプリケーションには移ることができません。この2つのモー ドは、スクリプトエディタのHSPメニューにある、「フルスクリーンモード」を 選択することで切り替えることができます。 EXE,SCRファイルのアイコン書き換え配布用の実行ファイルは自由にアイコンを書き換えていただいて構いません。 通常、EXEファイルやSCRファイルを作成すると、Windowsから見たアイコンは HSP2.EXEと同じものになっています。 現在のHSPには、アイコンの編集機能はありませんがアイコンを直接書き換える ソフト( KH IconRewrite98など) を使用していただくことができます。また、 以下のソフトを使ってもHSPアイコンの書き換えが可能です。 また、tomさん作「ICONREWR.DLL」などユーザー作成によるアイコン書き換えツ ールを使うことでも可能です。詳しくは、以下のURLにある画像処理DLLを参照 してください。 HSPスクリプトサンプルHSPがインストールされたディレクトリ(C:\Program Files\hsp26\など)にある 、「sample」フォルダ以下には、HSPスクリプトエディタから実行可能なサンプ ルが多数収録されています。エディタから開くメニューを選択するか、ファイ ルをドラッグ&ドロップするなどして読み込み実行させることができます。
ファイル"samples.as"には、HSPで使うことのできる簡単な例が集められていま す。この中には、多数のサンプルスクリプトが収録されています。この一部を 切り出してスクリプトの一部として使用することができます。 HSPの機能を活 用するための参考にしてみてください。 "samples.as"に含まれているサンプル スクリプトは以下の通りです。
コモンディレクトリについてHSP ver2.5より、「#include」命令でサーチされるファイルのディレクトリに コモンディレクトリが追加されています。これは、「#include」命令で挿入さ れるファイルが、通常はソースファイルと同じ(カレント)ディレクトリにある ものが使われますが、そこにない場合は、コモンディレクトリにあるものを使 うというものです。 hspext.dllなどの拡張プラグインを使うためのファイル、 (hspext.asなど)をコモンディレクトリに置いておけば、それを使うソースファ イルと同じディレクトリでhspext.asを用意する必要がなくなります。 コモンディレクトリは、HSED2.EXEやHSP2.EXEと同じディレクトリにある「 common」という名前になります。たとえば、「c:\hsp」というディレクトリに HSED2.EXEがあり、「c:\script」というディレクトリで「test.as」というスク リプトを編集しているとすると、「#include」命令でファイルをサーチする順 番は、
のようになります。 メインウインドゥ非表示EXEファイルEXEファイル作成時に、メインウインドゥを非表示にして起動させることが可能 です。 EXEファイル作成のダイアログで、「メインウインドゥを非表示にする 」のチェックをONにしてEXEファイルを作成すると、そのEXEファイルは起動時 にメインウインドゥ (ウインドゥID0)が最初に表示されなくなります。これは 、起動時にウインドゥサイズを変更したり、表示位置を変更しても一瞬だけウ インドゥがデフォルトの位置に見えてしまうのを防ぎたいという人のためのオ プションです。このオプションをONにした場合は、「gsel 0,1」などの命令で ウインドゥをアクティブにしない限りメインウインドゥは表示されません。メ インウインドゥの位置やサイズをちらつきなく変更したい場合や、メインウイ ンドゥを表示する必要のないアプリケーションを作りたい時に活用してみてく ださい。また、メインウインドゥが非表示になっている場合でも、ウインドゥ は存在しているので、メインウインドゥに対して行なった描画やオブジェクト 配置は正常に実行され保存されています。 HSP拡張プラグインについてHSPでは、拡張プラグインという形で機能を追加していくことが可能です。これ により、HSP本体だけでは実現できない処理が可能になります。 HSP拡張プラグ インは、標準でDLLまたはHPIの拡張子を持つファイルとなっています。このフ ァイルは、必ずHSP本体(HSP2.EXE)と同じディレクトリに存在していなければな りません。また、EXEファイル作成の際にPACKFILEに入れて、1つのEXEファイル にすることはできません。拡張プラグインを使用するEXEファイルを作成した場 合は、EXEファイルと同じディレクトリに拡張プラグインを置いてください。 拡張プラグインは、標準で以下の4つが同梱されています。それぞれのプラグイ ンについての使い方詳細は、別途テキストを参照してください。
HSP ver2.4dから標準で同梱されている、機能拡張プラグインです。 この拡張DLLを使用することにより、40種類以上の新規命令が追加され、レジス トリ操作、簡易数学関数、シリアル通信、フルカラー画面操作、拡張ファイル アクセスなど多くの機能がHSPからコントロールできるようになります。さらに アプリケーションキャプチャー命令の搭載により、HSP以外のアプリケーション をコントロールすることが可能になります。これらの命令は、HSP単体では実現 できないようなツール、ユーティリティの作成に役立つものが多く、さらに高 度なアプリケーション開発が可能になります。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。
HSP ver2.4hから標準で同梱されている、TCP/IPソケット通信用プラグインです 。 この拡張DLLを使用することにより、LANやインターネットを通じてデータの送 受信を行なうことが可能になり、簡単なクライアント・サーバーソフトを作成 することもできます。他のマシンとのコミュニケーションに、インターネット のクライアントに、ネット対応のゲームなど多くの場面で活用することができ るでしょう。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。
HSP ver2.5から標準で同梱されている、データアクセスのためのプラグインで す。 大量の文字列や数値をまとめてデータ管理する場合に威力を発揮します。特に 数値や文字列のソート機能は、大量のデータでも短時間で並び替えが可能です 。また、CSV形式のファイルを配列に変換したり検索する機能などが用意されて います。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。
HSP ver2.4gから標準で同梱されている、DirectX対応プラグインです。 この拡張DLLを使用することにより、新規命令が多数追加され、DirectXを使用 したハイレベルなソフトを開発することが可能になります。 HSPDX.DLLを使用 するためには、Microsoft DirectX3以降(DirectX5以降を推奨)がインストール されている必要があります(Windows98には標準搭載されています)。また、 WindowsNT4.0以降に搭載されているDirectDrawでも動作します。 豊富なスプライト制御命令を持っているので、面倒な角度ごとの移動、自由落 下、衝突判定などを1つの命令で実行できます。これにより、2Dキャラクタを使 ったゲーム、デモなどの作成が従来よりも楽に、そして高速にできます。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。
HSPシステム機能を持つプラグインです。 スクリプトエディタが持つHSP関連機能(コンパイル、実行、オブジェクト作成 、実行ファイル作成) をコントロール可能です。HSPのシステム機能を、HSPの スクリプトから制御することで、それぞれのユーザーに合った独自のカスタマ イズやバッチ処理が可能になります。 Windows95/Windows98/WindowsNT/2000で動作を確認しています。
HSP ver2.55から標準で同梱されている、高速画像処理プラグインです。 フルカラー、パレットモードでの2D・3Dグラフィック表示をサポートします。 スプライトを使用した2Dゲームから、3Dモデルを使った本格的なソフトまで幅 広く利用することができます。HGIMG.DLLで追加される主な機能は以下の通りで す。
Windows95/Windows98/WindowsNT/2000で動作を確認しています。 HSP拡張プラグインは、仕様が公開されていて、ユーザーの方たちが制作した多 くのプラグインが存在します。 HSPの可能性を大きく広げるプラグインが、以下のURLで多数紹介されています 。 HSP 機能拡張ソフト紹介のページ 拡張ランタイムについて「HSP拡張ランタイム」は、「HSP拡張プラグイン」の機能を DLLファイルなし で実行できるようにするためのシステムです。簡単に言えば、拡張プラグイン を使用したプログラムであっても、 EXEファイルと一緒にDLLファイルを同梱す る必要がなくなります。ただし、どんなDLLでも可能なわけではありません。仕 様にもとづいて作られた「HSP拡張ランタイムモジュール(HRTファイル)」がサ ポートするDLLのみ、実現が可能です。「HSP拡張ランタイム」により、HSPで作 られたプログラムを実行ファイルに変換する際の選択に、幅が広がります。た とえば、JPEGファイルを使用していないプログラムで実行ファイルを作成する 場合、「コンパクト版HSPランタイム」を使ってEXEファイルを作成すれば、通 常よりもサイズが小さく抑えられます。公開するEXEファイルのサイズが少しで も小さい方がいい人にもお勧めします。 「HSP拡張ランタイム」についての詳細は、「拡張ランタイムマネージャマニュ アル」(HSP2.6:hsperun?)をお読みください。 HSPモジュール機能についてモジュール機能は、HSPをより深く高度に使いたいという方のための拡張機能で す。しかし、この機能はすべての人に必要なものではありません。初心者の方 や、これからHSPを使う方は、まだモジュールについての習得はしなくても大丈 夫です。 HSPモジュール機能は、複数のスクリプトをラベル名や変数名の衝突を気にせず 結合するためのものです。 この機能は、いままでのHSPではボトルネックになっていた問題、大きなサイズ のスクリプトを作る時に変数名などの管理がしにくくなるという点、他の人が 作成したスクリプトの再利用が難しかったという点を改善し、より汎用性の高 いスクリプトを組むことができるようになります。 HSPモジュール機能についての詳細は別途ドキュメント(HSP2.6:module) を参照し てください。 デバッグウインドゥについて[hsp_dbgw] ver2.4gから新たに、スクリプト実行中にHSPの状態や変数の内容を チェックすることができるデバッグ機能が搭載されました。この機能を使うた めの特別なウインドゥが、「デバッグウインドゥ」になります。これは、スク リプトエディタの「HSP」メニューの「Debugウインドゥ表示」のスイッチを入 れることで、実行時に常に表示させておくことが可能です。また、このスイッ チが入っていない場合でも、 HSPでエラーが起こった場合には自動的にポップ アップ表示されます。 デバッグ機能を持たせたためにHSP2.EXEのサイズが多少大きくなっていますが 、実行可能なEXE、SCRファイルを作成する場合には、ランタイムのみが含まれ ているHSPRTが参照されます。このため、実行可能ファイルにはデバッグ機能や エラーメッセージなどのデータ類などは一切含まれません。 HSPデバッグウインドゥ表示の詳細デバッグウインドゥの左上のウインドゥで表示カテゴリーを選択します。 選択された情報が、下のウインドゥに表示されます。情報は、カテゴリー の選択をした時点でのものになります。内容は、自動的には更新されない ので、別な時点での情報を知りたい時には、再びカテゴリーのウインドゥ をクリックしてください。 [全般] 現在実行されている行、HSPの状態(実行モード)などが表示されます。また 、gosubやloopのネストレベル(深さ)も表示されます。 [システム変数] HSPのシステム変数の内容を一覧で表示します。 [MCI] sndload命令などで読み込まれている音声、動画ファイルの一覧を表示しま す。 [モジュール] モジュール機能が使われている場合に、その詳細を表示します。登録され た新規命令や、モジュール名一覧などを見ることができます。 [変数xxx] 定義されている変数の内容を表示します。「配列変数を表示」のチェック ボックスを入れると、配列の内容を一覧で表示します。また、「変数のダ ンプ」のチェックボックスを入れることで、変数バッファの内容を16進数 で表示します。変数のダンプや配列の表示は、あまりにも大きなサイズが 確保されている変数の場合は、すべてが表示されない場合があります。文 字列型の変数に、バッファの容量を越えた文字列が代入されている場合は 、警告メッセージが表示されます。その場合は、sdim命令などで確保する バッファのサイズを大きくしてください。また、「モジュール変数を表示 」にチェックがついている場合は、モジュール内部で使用されている変数 の内容も表示します。 海外版Windowsへの対応についてHSPの通常パッケージは、日本語によるメッセージやメニューが採用されていま すが、起動や実行に関しては、すべての日本語版以外のWindowsでも可能です。 実行ファイル(EXE)やスクリーンセーバー(SCR)を作成した場合も、英語(US)版 Windowsや、欧州版などを含めたWindowsで動作するよう作られています。 (現 在は、英語(US)版Windows98でのみ動作確認をしています) 日本語などIMEを標準で搭載しているWindows、日本、中国、韓国、台湾、アラ ビアなどの地域向けWindowsでは、フルスクリーン時などにIMEツールバーを消 去するように作られています。そのため、HSP内部ではWindowsにIMEがインスト ールされているかのチェックをするためのコードが含まれています。 また、HSPのエラーメッセージや、HSPスクリプトエディタのメニューなども含 めて英語で表示されるUS版HSPを別途配布しています。 US版HSPは、 HSPのオフィシャルホームページ (特別バージョンダウンロード) にて入手可能です。 履歴付き実行機能についてスクリプトが実行された結果をログファイルに記録しながら動作する履歴付き 実行機能が追加されました。もっとも簡単な使い方は、
のような手順で行ないます。これにより、命令1つ1つが実行されるごとにその 内容や状態をログファイルに記録します。多くの命令が実行されると、それだ けログファイルも大きくなるので注意してください。 履歴付き実行は、それほど利用頻度の高いものではないですが、発見が困難な バグや、プラグイン開発、隠れた問題の発見などに効果を発揮します。特にエ ラー個所の発見が困難な場合(一般保護エラーで終了した場合など) 直前まで実 行していた部分を検証できます。また、割り込み発生時のプログラムの流れや 、gosub〜returnネストの不整合チェック、モジュール呼び出しの様子などを確 認することができ、より安定したスクリプトを作成するための支援となります 。 履歴付き実行で使用されるログファイルは、スクリプトと同じディレクトリに 「hsplog.txt」という名前になります。このファイルは、通常のテキストファ イルになっています。このログに情報を書き込むには次の3つの方法があります 。
いずれの場合もデバッグ時にのみ有効になります。実行可能ファイルにした後 はこれらの機能はすべて無効です。 スクリプトエディタから「履歴付き実行」を選択すると、実行開始時からログ を記録することができます。そうしなかった場合でも、logmode命令を入れるこ とにより、任意の時点、任意の範囲を履歴付き実行の対象にすることができま す。 logmode p1,p2 p1 : 実行履歴(ログ)記録モード 1 = エラー時 2 = 停止/終了時 4 = gosub呼び出し時 8 = module呼び出し時 16 = 外部命令(DLL)呼び出し時 32 = 割り込み呼び出し時 512 = 命令実行時(標準命令) 1024 = 命令実行時(標準のWindows依存命令) 2048 = 命令実行時(代入命令) p2 : 実行履歴(ログ)記録オプション 1 = 実行行 2 = 時刻 4 = 日付 8 = ファイル名 実行履歴(ログ)記録の設定を行ないます。 p1で、どのような時に記録を行なうかを設定します。 複数の項目を指定する場合は、項目の値を合計したものを指定 してください。 p1に-1を指定すれば、すべての項目を指定することができます。 p1に0を指定した場合は、履歴記録は行なわれずに通常の実行と なります。 p2で、記録されるログに付加される情報の項目を指定します。 これも複数の項目を指定する場合は、項目の値を合計したものを 指定します(-1ですべての項目)。 p2の指定を省略した場合は、以前の設定が引き継がれます。 logmes "message" 実行履歴(ログ)にメッセージを記録します。 実行履歴(ログ)記録モードに関わらず、必ずログ記録されます。 ある時点での変数の内容や、通過チェックなどに利用できます。 記録された履歴(hsplog.txt)は以下のような内容になります。 行番号 ファイル 日付 時刻 実行結果 ------------------------------------------------------------------------ #00000 [test.as] (2001/02/11) (23:01:03) |Start logging:obj #00000 [test.as] (2001/02/11) (23:01:03) |ICMD:$00000002:$04:onexit #00002 [test.as] (2001/02/11) (23:01:03) |LET:$0000000a:h <- 0 #00003 [test.as] (2001/02/11) (23:01:03) |LET:$00000010:b <- 0 #00003 [test.as] (2001/02/11) (23:01:03) |ICMD:$00000014:$2e:logmes #00007 [test.as] (2001/02/11) (23:01:03) |>Test Message #00008 [test.as] (2001/02/11) (23:01:03) |LET:$0000001a:a <- 123 #00009 [test.as] (2001/02/11) (23:01:03) |LET:$00000020:i <- KK #00010 [test.as] (2001/02/11) (23:01:03) |LET:$00000026:a++ <- 124 #00010 [test.as] (2001/02/11) (23:01:03) |DCMD:$0000002a:$27:input #00012 [test.as] (2001/02/11) (23:01:03) |DCMD:$0000002e:$00:button #00013 [test.as] (2001/02/11) (23:01:03) |DCMD:$00000036:$40:objprm #00015 [test.as] (2001/02/11) (23:01:03) |ICMD:$0000003c:$1a:stop #00016 [test.as] (2001/02/11) (23:01:03) |Stopped. #00016 [test.as] (2001/02/11) (23:01:04) |JUMP:0:$0000001e #00016 [test.as] (2001/02/11) (23:01:04) |ICMD:$0000003e:$13:mes #00018 [test.as] (2001/02/11) (23:01:04) |ICMD:$00000042:$1a:stop #00019 [test.as] (2001/02/11) (23:01:04) |Stopped. #00019 [test.as] (2001/02/11) (23:01:06) |IRQ:0:0 #00019 [test.as] (2001/02/11) (23:01:06) |JUMP:0:$00000021 #00021 [test.as] (2001/02/11) (23:01:06) |IF:$00000044:0 #00021 [test.as] (2001/02/11) (23:01:06) |End logging. 記録される内容は、記録モードで指定されたイベントごとに異なります。
実行ファイル自動作成についてver2.6から、スクリプトエディタに「実行ファイル自動作成」のメニューが追 加されました。これは、現在エディタで編集中のソーススクリプトを直接実行 ファイルに変換するものです。今まで、実行ファイル作成には「packfile編集 」や実行ファイルの種類、ファイル名、ウインドゥ初期サイズなど色々なオプ ションを指定するステップを踏まなければならず、勘違いやミスが起こりやす かったものをシンプルに統一したものが実行ファイル自動作成の機能です。 「実行ファイル自動作成」(ctrl+F9)を選ぶと、現在編集中のソースを start.axとして出力して、packfileを作成、「hsptmp.exe」という名前で実行 ファイル(EXE)を生成します。(start.axは暗号化されます) 最も単純なパターンは以上のようなものです。多くの場合は、自動作成して出 来上がる実行ファイルで十分ですが、さらに細かく設定をする場合や、実行フ ァイルにリソースとしてファイルをパックしたい場合には、自動作成プロセス をコントロールするプリプロセッサ命令を置くことで、細かく制御することが できます。 #pack "ファイル名" [PACKFILE追加ファイル指定] #epack "ファイル名" [PACKFILE追加ファイル指定] 実行ファイル自動作成で、packfileに追加されるファイルを指定します。指定 されたファイルは、実行ファイル作成時にリソースとして一緒にパックされま す。 #packは、通常の形式でパックします。#epackは、暗号化してパックされ ます。重複したファイルを追加しようとした場合には、無視されます。「 start.ax」は、実行ファイル自動作成の際に自動的に追加されるため特に追加 ファイルとして指定する必要はありません。 例: #pack "a.txt" #epack "a.bmp" 上の例では、「a.txt」「a.bmp」というファイルを実行ファイルと一緒にパッ クし、"a.bmp"は暗号化します。 #packopt キーワード名 パラメーター [自動作成オプション指定] 実行ファイル自動作成の動作を指定します。キーワード名、の後スペース又は TABを入れてパラメーター (文字列の場合は「"strings"」のように指定)を記述 して下さい。 #packoptで指定できるキーワードは以下の通りです。
例: #packopt type 2 #packopt name "test" #packopt runtime "hsp2c.hrt" 上の例では、「test.scr」というスクリーンセーバーを「hsp2c.hrt」というラ ンタイムを使用して作成します。 今まで通りに、「packfile編集」からパックされるファイルを選択して実行フ ァイルを作成することも可能です。「実行ファイル自動作成」を行なうと、 packfileが自動的に作成されるため、それまで保存されていたpackfileの情報 は上書きされるので注意して下さい。尚、「start.ax」はデフォルトで暗号化 されたものがpackfileに追加されます。また、「#packopt runtime "ランタイ ムファイル名"」で指定されたランタイムファイル(拡張子がhrtのもの)は、 hspcmp.dllと同じディレクトリか、または、runtimeディレクトリに置かれてい るものが使用されます。 loadlib.dllの統合についてver2.6から、tomさんが製作された拡張プラグイン「loadlib.dll」に含まれる 全機能をHSP標準命令として組み込んでいます。llmodなど多くのloadlib.dll 利用アプリケーションをDLLなしで利用できるようになります。 同梱されているcommonフォルダに含まれるloadlibおよびllmod関連ヘッダファ イル(llmod.asやloadlib.asなど)は、内蔵命令用に修正されていますが、過去 に作成されたスクリプトなどで古いヘッダファイル(DLLを呼び出すもの) を使 用している場合は、内蔵命令のキーワードと衝突してエラーとなりますのでご 注意下さい。過去に作成されたloadlib使用スクリプトも、ver2.6に同梱されて いるヘッダファイルを使用すれば正常に動作するはずです。 |