Last Update : 2007/07/xx
HSP (v2.x/v3.x) の全般的なプログラミング情報トピックスいろいろですー。
[1] パックできるファイル
HSPのPACKFILE機能(パックファイル機能)。実行ファイル内にファイルそのものを埋め込むことができる機能ですが、これを利用してパックするファイルは、基本的に 『start.ax』 だけです。これ以外に、picload命令で読み込むことができる画像ファイル(HSP3なら、*.bmp、*jpg、*.gifなど)もPACKFILE機能を利用して実行ファイル内にパックすることができます。(→ 参照、HSP Tips : 画像ファイルの表示)
一方、sndload命令(HSP2)やmmload命令(HSP3)で読み込むことができるMIDIファイル、MP3ファイル、WMAファイルなどの音楽系ファイル、そしてAVIファイル、MPEGファイルなどの動画系ファイルは、一切パックできません。ただ、例外として、音楽のWAVEファイルについてはPACKFILE機能を利用して実行ファイル内にパックすることができます(ファイルサイズが2MB以下の制限あり)。(→ 参照、HSP Tips : 音楽ファイルの再生)
また、外部ファイルとして存在していないと利用できない仕組みになっている拡張プラグイン(DLL/HPI形式)は、配布する際に実行ファイルと一緒に同封しなければなりません。実行ファイルを起動した時に、「内部エラー38」が表示されるのは、実行ファイルと同じフォルダに拡張プラグインが存在しないためです。
−−−− 正確に表現すると、「パックする」という行為自体は、どんなファイルでも可能です。ただ、パックしたファイルを「スクリプト上から直接利用する」という行為ができません。PACKFILE機能で含めた音楽ファイルや動画ファイルを、bload命令やbcopy命令なりで読み込んで、ハードディスク上にファイルとして出力したものを利用するというのは可能です。
下の表は、HSPの標準命令を使ってスクリプトから直接利用できるファイルの一覧です。
命令 | PACKFILE機能の直利用 | |
HSP2 | bload命令 | すべて可能 ※当然ながら音楽や動画を再生する命令ではない |
noteload命令 | 可能 (テキストデータ系ファイル) | |
sndload命令 | WAVEファイルのみ可能 [ファイルサイズ 2MB以下の制限あり?] ※MIDI、AVI、MP3、WMA、MPEGファイルなど不可能 |
|
mci命令 | 不可能 | |
picload命令 | 可能 (BMP、MAG、JPEGファイルの全3種) | |
HSP3 | bload命令 | すべて可能 ※当然ながら音楽や動画を再生する命令ではない |
noteload命令 | 可能 (テキストデータ系ファイル) | |
mmload命令 | WAVEファイルのみ可能 [ファイルサイズ 2MB以下の制限あり] ※MIDI、AVI、MP3、WMA、MPEGファイルなど不可能 |
|
mci命令 | 不可能 | |
picload命令 | 可能 (BMP、GIF、JPEG、ICOファイルの全4種) | |
imgload命令 | 不可能 [common\mod_img.as モジュール] |
注意点として、HSP2やHSP3に限らず、PACKFILE機能として埋め込めるファイル名に制限があります。『スペースを含まない半角で11文字以内のMS-DOSファイルネーム』(参照、8.3形式)でなければなりません。つまり、日本語ファイル名や文字列の長ーいファイル名はダメ!
[2] パックしてはいけないファイル
暗号化機能が付くHSP 2.5時代の話ですが、それほど巨大なソフトとは感じられない割に、やたらとファイルサイズが馬鹿でかいHSP製の実行ファイルを見かけたことがあり、中身をバイナリエディタでチェックしてみると、丸々ソースコード(*.as)や、なぜかHSPスクリプトエディタ(hsed2.exe)らしきものが入っていて・・・ (^o^;;;
PACKFILE機能は、ファイルをパックすればパックするだけ、その分起動時間に影響します。パックする必要性のないものをパックするのは、"無駄"以外の何者でもありません。下の表は、PACKFILE機能としてパックする必要性が 全く 全然 100% スーパー 皆無なHSPの関連ファイルや拡張子です。
PACKFILE機能で埋め込んでいませんか? | |||
*.as | *.as.i | *.hsp | *.hsp.i |
hsptmp | hsptmp.i | packfile | obj |
hsprt | *.hrt | *.dpm | - |
hsp2.exe | hsp3.exe | hsp3hg.exe | - |
hsed2.exe | hsed3.exe | hsed3le.exe | - |
*.dll | *.hpi | - | - |
[3] PACKFILE機能 と #include命令 は 全くの別物
ついでの情報として、PACKFILE機能と#include命令を同等のものと勘違いしている人がいるようで・・・。機能的なつながりは一切ありません。 つ『PACKFILE機能 ≠ #include命令』
#include命令について、たとえば下のような2つのスクリプトファイルが存在していたとします。
/*--------------------------------- main.hspファイル ---------------------------------*/ #include "hoge.hsp" mes "わーわー" stop
/*--------------------------------- hoge.hspファイル ---------------------------------*/ mes "あい〜ん!"
そこで、main.hspファイルを実際にコンパイルすると・・・、下のようなコードとして解釈されます。#include命令で指定したファイル内のスクリプトがそのまま展開されるわけ。
mes "あい〜ん!" mes "わーわー" stop
HSPに付属するスクリプトエディタの各種設定は、すべてWindowsのレジストリに保存されています。
レジストリエディタの起動方法は、スタートボタンの[ファイル名を指定して実行]より「regedit」と指定して、Enterキーを押します。(レジストリにはWindowsの根幹に関わるデータが含まれているので、取り扱いには十分ご注意を。
HSP2: HKEY_CURRENT_USER\Software\OnionSoftware\hsed
HSP3: HKEY_CURRENT_USER\Software\OnionSoftware\hsed3
ちなみに、HSP3のタブ型スクリプトエディタでは、INIファイルに設定を保存する選択肢も用意されています。ツールメニューの[オプション]をクリックして、[全般-動作]ツリーの[設定の保存方法]で選択できます。ただ、レジストリ保存と比べると、エディタの起動と終了の際の動作が少々にぶーい感じ?
HSPに付属する「HSP Help Browser」(HSPヘルプブラウザ、helpman.exe)。HSPスクリプトエディタ上で命令や関数などにフォーカスを置いてF1キーを押すと起動して説明を手軽に参照できる、おなじみの便利ツールです。S.ProgramsさんがHSPで製作し、HSP 2.61から公式のヘルプマネージャーとして採用されました。
さて、HSP3のバージョン3.1では、IEコンポーネントを利用してHTMLスタイルで提供する「HSP Help Browser II」、バージョン3.2から「HSP Document Library」に切り替わりました。(命令や関数の説明が書かれていたHTMLリファレンスは削除)
デザインが抜群に向上した一方、個人的に気になったのが、「モッサリした重い動作」。PCの性能にもよるのでしょうが、起動に時間がかかる、スクロールバーを動かすと何だかページがフラフラ?フワフワ?感が・・・。(−−;
IEコンポーネントを採用した以上、パフォーマンスが以前のものより落ちてしまったのは仕方のないことではありますが、使いづらい方は、旧バージョン(v1.x)を利用しましょう。
1 | v1.x系の最終版「HSP HELP Browser 1.53a」を、製作者さんのホームページからダウンロードします。くれぐれも新バージョン(v2.x)の方を入手しませぬよう。 |
2 | HSP3本体以下の hsphelp フォルダにある「helpman.exe」のファイル名を、適当に「helpman.exe.bak」あたりに変更しておきます。(バックアップ用) |
3 | 入手した旧バージョン「helpman.exe」を hsphelp フォルダに置き、そのまま実行してください。初回は、データベースを生成する処理が行われ、進行状況ログには、「サポートされていないキーワードです。」というエラー情報がたくさん表示されます。 |
4 | 最終的に、『●個の Warning が発生しました。ログを保存しますか?』というエラーダイアログが表示されるので、[いいえ]を選択してください。 |
5 | そのまま、普通に利用しちゃいましょう。 |
<< HSP Tips 3 || HSP Tips 5 >>
Copyright © 2005-2012 Kpan. All rights reserved.