[Top Page][All Pages][Recent Changes]

Edit History:View

Content of HSPのFAQ at 2011/10/09 23:47:49 JST

View diff from current version

Return to the edit history

  [[$$toc]]
  - →[[HSPWiKi]]に戻る
  
  ----
  
  
  * FAQリスト
  
  HSPに関係するFAQ(よくある質問と答え)のリストです。~%
  HSP3固有のFAQは、[[HSP3のFAQ]]もご覧ください。~% 
  
  ----
  
  * FAQ
  回答できる方で暇のある方は、より分かりやすい回答の追記をお願いします。
  
  
  ** HSPは有料ですか?
   HSPの開発環境はフリーウェア(無料)です。将来的に有償になることはありません。
  
  ** HSPで作成したプログラムは販売できますか?
   著作権は製作した人にあるので、配布や販売(シェアウェアなど)は自由です。詳しくはHSPの説明マニュアル「HSPシステムドキュメント・インストールガイド (hsp3.htm)」のライセンスを確認しましょう。
  
  ** HSPで拡張プラグイン(DLLファイル)は作成できますか?
   不可能です。
  
  ** 実行ファイル(EXEファイル)のファイルサイズを節約したい
   [[HSPのFAQ:EXEのファイルサイズを節約したい]]
  
  ** 実行ファイル(EXEファイル)にすると起動できない
   [[HSPのFAQ:EXEにすると起動できない]]
  
  ** 実行ファイル(EXEファイル)にすると正常に動作しなくなる
   [[HSPのFAQ:EXEにすると正常に動作しなくなる]]
  
  ** エラーメッセージ(HSP Error)の意味と対処法が分からない
   [[HSPのFAQ:エラーメッセージの意味と対処法が分からない]]
  
  ** F5キーでコンパイル実行したときは問題なかったのに、作成した実行ファイルを起動すると、エラー番号「38」が表示されます。
   拡張プラグインの命令を使用しているならば、必ずDLLファイルを実行ファイルと同じフォルダに置いてください。DLLファイルはHSPのインストールフォルダに入っていますので、コピーしてきてください。
  
  ** HSPで作成した実行ファイルをMac、携帯電話、ゲーム機で動かしたい。
   HSP3の対応環境は基本的に「Windows」だけなので不可能です。(HSPLetで変換したものは、Javaに対応したIEやFirefoxなどのインターネットブラウザ上でのみ)
  
  ** HSPで作成した実行ファイルのアイコンは変更できますか?
   変更できます。ただ、HSP自体には変更機能はないのでツールを入手してください。([http://hsp.tv/make/tool4.html HSPTV! 支援ツール]の「Let's HSPIC!」)
  
  ** 拡張プラグイン(DLLファイル/HPIファイル)を実行ファイル(EXEファイル)に組み込みたい。
   不可能です。Windows自体の仕様なのであきらめましょう。PACKFILE機能で実行ファイル内に拡張プラグインをパックしたとしても、その命令は使えません。実行ファイルと拡張プラグインをいっしょに同封して配布しましょう。
  
  ** MP3ファイル、MIDIファイル、AVIファイルを実行ファイル(EXEファイル)に組み込みたい。
   PACKFILE機能として組み込むことはできますが、HSPの標準命令のmci命令、mmload命令(HSP3)・sndload命令(HSP2)でその音楽ファイルや動画ファイルを直接再生することはできません。必ずパソコン内にファイルとして存在していないといけません。例外はmmload命令・sndload命令のWAVEファイル再生だけです。~%
   picload命令の画像ファイルについては、PACKFILE内のファイルをすべて直接利用できます。
  
  ** 実行ファイルからスクリプトは簡単に読み取られてしまうの? また、読み取られないようにするにはどうすればいいの?
   スクリプトを見るためには専用のツールが必要ですが、一般向けには配布されていないため、一般人が実行ファイルからスクリプトを見ることはほとんど不可能です。
  ;;余計なことは書かない。
  ;; スクリプトを見るためには専用のツールが必要で、簡単に見られてしまう心配はほとんどありません。EXEファイルからスクリプト(正確には中間コード)を出力するツールは存在しますが、出力されたものは変数名やラベル名やコメントなどが失われているバイナリデータです。もし見られたとしても、解読には大変な根気と労力、時間が必要です。HSPに限ったことではないですが、EXEファイルという実体データが存在する以上、内部を完全に隠すのは不可能です。
  
  ** 「HGIMG」と「d3module」をいっしょに使いたい。
   拡張プラグイン「HGIMG」はDirectXを使用した描画を行なっています。この上にHSPのline命令などによる通常の描画は行なえません。したがって「d3module」併用による描画はできません。
  
  ** PACKFILE機能でうまくパック出来ません。
   ファイル名の制限(長さ8.3形式、半角英数字、日本語不可)に引っかかっていませんか?パックしたいファイルがフォルダに入っていませんか? HSPのPACKFILE機能には、フォルダ構造は存在しません。
  
  ** 画面がちらついてしまいます。
   cls命令を安易に利用すると起こります。画像を消すにはboxf命令で塗りつぶし、redraw命令を組み合わせることで解決できます。オブジェクトを消すにはclrobj命令を利用して、オブジェクトの内容や状態の変更だけを行いたいならobjprm命令を利用しましょう。
  
  ** HSP3は実数(小数点)に対応したとのことだけど、演算結果は整数値になります。
   HSP付属ドキュメントの「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)」の「2.スクリプト記述の基本」->「式」の最後らへんを確認してください。
  
  ** #include命令の動作がよく分からない
   [[HSPのFAQ:#includeの動作が良く分からない]]
  
  ** ウィンドウの上部分によくついているメニューバーを表示したい。
   HSP3のcommonフォルダに「mod_menu.as」モジュールが用意されてます。~%
  (サンプルは「sample\new\menubar.hsp」と「sample\new\menusample.hsp」)
  
  ** 画像ファイルにPNGファイルを使いたい。
   HSP3のpicload命令はBMPファイル、JPEGファイル、GIFファイル、ICOファイルだけです。PNGファイルを仮に標準で扱えるようにすると、画像データを展開するためのライブラリを組み込む必要がでてくるため、HSPで出力される実行ファイルのサイズがその分でかくなる影響があります。~%
   ただ、comonnフォルダに「mod_img.as」というモジュールが用意されてます(PACKFILE機能は利用できない)。また、標準で同封されてる拡張プラグイン「HSPCV」以外にもPNGファイルを読み込めるプラグインがいくつか公開されてます。
  
  ** 画像ファイルを出力したい。
   HSPの標準で対応してるのは、bmpsave命令のBMPファイルだけです。標準で同封されてる拡張プラグイン「HSPCV」以外にも、JPEGファイル、GIFファイル、PNGファイルを出力できるプラグインがいくつか公開されてます。
  
  ** 変数をたくさん使いたい。たくさんの変数をrepeat〜loopで処理したい。
   配列変数を使います。
  
  ** 配列変数って何?
   変数は一つの変数に対して一つの値(数値・文字列など)を入れられるのに対して、配列変数は一つの配列変数に対して同じデータ型(整数型・実数型・文字列型など)なら1個でも100個でもメモリの許す限り値を入れることができます。
  配列変数の一つ一つを'''要素'''といい、'''添え字'''と呼ばれる正数番号で要素を指定して代入したり要素に入っている値を使ったりします。
  
  ** repeat命令やgosub命令はそれほどたくさん使用していないのにエラー「サブルーチンやループのネストが深すぎます」が表示されます。
   repeat〜loop間をgoto命令で抜けていませんか? break命令を使用しましょう。
  
  ** 画像の拡大は、gzoom命令、gsquare命令、grotate命令どれがいいの?
   まずは自分で試されることをお勧めします。結果を言えば、単純に拡大するだけならgzoom命令がいいでしょう。
  
  ** 通常の四角形以外の形状をしたウィンドウを表示するには?
   「リージョン」という機能を利用することになります。これはWin32 API関数を使用する必要があり、HSPの基本命令では実現できません。
  
  ** 「Win32 API」って何?
   Windows自体が用意している関数群です。user32.dll、shell32.dll、kernel32.dll、gdi32.dllなどのライブラリがシステムに存在します。初心者向きの機能ではなく、ある程度プログラミングが上達した上で活用してください。(参照、[http://chokuto.ifdef.jp/ ちょくとのページ]の「Advance HSP」)
  
  ** ベクターやユーザサイトからダウンロードしてきた、○○というプラグインの使い方がよく分かりません。
   同封されている説明テキストやサンプルをよく確認してください。また、プラグインの作者へ問い合わせください。作者が音信不通の場合は、公式掲示板などで尋ねてください。
  
  ** キーボードのキーを複数同時に押すと認識しないことがある。
   一般のキーボードでは、たくさんのキーを同時に認識することができません。ハードウェアの制限によるものなので、ソフトウェア側からの回避は不可能です。~%
   複数同時入力を認識できる「Nキーロールオーバー」機能に対応したキーボードを購入することで回避できますが、一般のキーボードよりも割高です。なお、ゲームパッドは基本的に全てのボタンを同時押し認識できるので、これを利用するのもひとつの手でしょう。~%
  [http://ja.wikipedia.org/wiki/N%E3%82%AD%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC Nキーロールオーバー](Wikipedia)、[http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29#.E3.83.AD.E3.83.BC.E3.83.AB.E3.82.AA.E3.83.BC.E3.83.90.E3.83.BC ロールオーバー](Wikipedia)、[http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20040701/3/ 八幡勇一の「キーボード論」](ITpro)~%
  
  ** bload命令、noteload命令、exist命令で正しいファイルパスを指定してもファイルが存在しないエラーがでる。
   フォルダの区切りで円記号を2つ指定してますか。「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)」の「2.スクリプト記述の基本」->「文字列」にある円記号の情報を確認してください。
  
  ** exist命令でフォルダの存在を確認しても、常にstrsizeに-1が返ります。
   exist命令はファイルの存在を確認するための命令です。フォルダ(ディレクトリ)の存在を確認するには、dirlist命令を使用してください。(p1にはダミーの変数、ファイルマスクにパス文字列、p2にディレクトリのみの5を指定し、システム変数statを確認)
  
  ** mes命令で「"」(ダブルクォーテーション)や「¥」(円記号)を表示したい。
   「プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)」の「2.スクリプト記述の基本」->「文字列」にある円記号の情報を確認してください。
  
  ** メモ帳のように、HSP製実行ファイルのアイコンにテキストファイルをD&Dした時にそのテキストを表示したい。
   HSPのシステム変数「dir_cmdline」を見ると、D&D(ドラッグ&ドロップ)したファイルのパス文字列が返ります。
  
  ** 実行ファイルにファイルをD&Dした際のファイルが読み込めない。
   ドラッグ&ドロップしたファイルのパスに半角スペースが含まれていると、ファイルパスが「"」(ダブルクォーテーション)で括られるため、前後の「"」を取り除く処理が必要です。これはWindows NT系OS以降の仕様で、Windows 9x系OSでは括られません。
  
  ** HSPで用意したウィンドウ画面にファイルをD&Dした時のパスを知りたい。
   Win32 API関数を利用する必要があります。サンプルがHSP3.1で「sample\new\dragdrop.hsp」、HSP3.2以降で「sample\misc\dragdrop.hsp」に用意されてます。
  
  ** ボタンなどのオブジェクトの表示サイズや表示位置を後から変更したい。オブジェクトを使用できないようグレー表示にしたい。
   HSP3のcommonフォルダに「obj.as」モジュールが用意されてます。
  
  ** rnd命令やgettime命令でエラーが表示されてしまいます。
   HSP2のrnd命令、gettime命令、instr命令、sysinfo命令、int命令、str命令、peek命令、getpath命令、strmid命令などは、HSP3からは関数形式に変更されました。HSP2とは記述方法が異なります。詳しくは、マニュアル「以前のバージョンからの変更点(アップデートガイド) (update.htm) 」などを参照してください。~%
   HSPスクリプトエディタの[HSP]メニュー→[HSP拡張マクロを使用する]にチェックが入っているか確認してください。(HSP 3.2以降はこの項目は廃止)
  
  ** HSPの情報を掲載しているユーザーサイトのサンプルを実行すると、エラーが出てしまいます。
   おそらくそのサンプルは、HSP2用のものだと思われます。HSP2とHSP3では、書式が変更になった部分があるため、そのままでは動かない場合があります。HSP3の書式に書き換えることで解決することがあります。詳しくは、ご覧になったユーザーサイトへ問い合わせてください。
  
  ** 文字をゆっくり表示するためのtext命令(表示スピード設定)が利用できません。
   HSP3では標準命令としてのtext命令は廃止になってます。ただ、commonフォルダ内のhsp3util.asモジュールに代替命令が用意されています。(#include命令でモジュールをインクロードする必要あり)
  
  ** プログラムを終了するときに確認ダイアログのようなものを表示したい。
   onexit命令を利用します。(HSP3のサンプル「sample\basic\onexit.hsp」)
  
  ** ウィンドウID1以降で×ボタンを押すとそのままプログラムが終了してしまう。
   (HSP3の場合) onexit命令を利用して、ginfo関数(タイプ2)かシステム変数ginfo_actをチェックします。この数値がウィンドウID1以降であれば、gsel命令でそのウィンドウの非表示だけを行う処理にします。
  
  ** 数値の桁数を揃える、16進数に変換するためのstr関数が利用できません。
   HSP3のstr関数はHSP2のstr命令と違って処理内容が変更されてます。strf関数を利用してください。
  
  ** 拡張プラグインhgimg3.dllが見つかりません。
   マニュアルには誤記載されてますが、「hgimg3.dll」というHSP3用拡張プラグインは存在しません。HGIMG3の機能は拡張ランタイム形式で提供されており、実行ファイル単体で配布できます。(HSP 3.2以降では誤記は修正済み)
  
  ** HSPでインターネットブラウザを作りたい。
   HSPでブラウザそのもの(HTMLレンダリングエンジン)を1から作るのは困難です。HSP3のサンプルにはIEコンポーネントを利用した簡単な実例が用意されてます。(「sample\comobj\comtest7.hsp」や「sample\comobj\web.hsp」)
  
  ** HSPそのものはどの言語で作られてますか?
   C++言語です。HSP3のソースコードは[http://www.onionsoft.net/hsp/openhsp/ OpenHSP]プロジェクトとして公開されてます。
  
  
  
  
  ** 関連リンク
  
  - [[HSP3のFAQ]]
  
  FAQかな?と思ったら、ここからたどってください。
  
  *** 公式文書
  
  - [[HSP2.6:hsp2faq]]
  
  *** その他リンク
  
  - [http://asg-hsp.hp.infoseek.co.jp/old/hsp.html くるとんルーム]
  - [http://www.rinku.zaq.ne.jp/ultimate/ HotSoupProcessorBiginner'sClub]