HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0821
ta-kaもういちど改めて exe作成について8解決


ta-ka

リンク

2010/8/21(Sat) 18:15:05|NO.34551

いろいろと調べましたが、

やっぱりよくわかりません。

どなたか

mesbox

の内容でexeを作る方法を教えてください。



この記事に返信する


inovia

リンク

2010/8/21(Sat) 18:37:04|NO.34552




ta-ka

リンク

2010/8/21(Sat) 21:24:16|NO.34561

すみませんでした。

それと、ゆっくり考え直したら

作成することができました。

今まで exe のことでお騒がせしました。



テック

リンク

2010/8/21(Sat) 22:06:41|NO.34562

>それと、ゆっくり考え直したら
>作成することができました。
exeファイルに関して、複数スレをたてていたようだけど・・・、
ホントに作成できたのかな・・・^^;

>http://hsp.tv/play/pforum.php?mode=all&num=34488
上記のスレのNO.34531のスクリプトを実行してみたけど、
私も作成できなかったけど・・・。

で試しにサンプルスクリプトを作成したので実行してみた。

//==================================================================================================== // ファイル名:SampleHsp.hsp // 内   容:exeファイル作成サンプルスクリプト // 作 成 者:テック // 更 新 者:テック // 作 成 日:2010/08/21 // 更 新 日:2010/08/21 // 履   歴:2010/08/21 新規作成 // メ   モ: //==================================================================================================== // インクルードファイル #include "hspcmp.as" // マクロの宣言(文字列定数) #define NULL_STR "" #define MES_INPUT_HSP_FILE "1.HSPスクリプトファイル名を入力してください" #define MES_INPUT_EXE_FILE "2.作成する実行ファイル名を入力してください(拡張子を含む)" #define MES_INPUT_EXE_MAKE "3.実行ファイルを作成します(" #define BUTTON_TITLE_REFERENCE "参照" #define BUTTON_TITLE_MAKE "作成" #define DIALOG_TITLE_HSP_FILE "HSPスクリプトファイル名" #define DIALOG_TITLE_NO_INPUT "警告メッセージ" #define DIALOG_TITLE_MAKE_RESULT "標準メッセージ" #define DIALOG_MESSAGE_NO_INPUT "ファイル名を指定してください" #define DIALOG_MESSAGE_MAKE_RESULT "実行ファイルが作成されました" // グローバル変数宣言 sdim g_strHspFileName, 256 sdim g_strExeFileName, 256 /*---------- HSPスクリプトファイル名入力欄・関連処理 ----------*/ // HSPスクリプトファイル名入力メッセージ pos 10, 10 mes MES_INPUT_HSP_FILE // HSPスクリプトファイル名入力欄 pos 10, 30 input g_strHspFileName, 400, 20 // HSPスクリプトファイル参照ボタン pos 420, 27 button gosub BUTTON_TITLE_REFERENCE, *Hsp_Reference /*---------- 作成する実行ファイル名入力欄・関連処理 ----------*/ // 作成する実行ファイル名入力メッセージ pos 10, 60 mes MES_INPUT_EXE_FILE // 作成する実行ファイル名入力欄 pos 10, 80 input g_strExeFileName, 400, 20 /*---------- 実行ファイル作成・関連処理 ----------*/ // 実行ファイル作成メッセージ pos 10, 110 mes MES_INPUT_EXE_MAKE + dir_exe + "フォルダに作成されます)" // 実行ファイル作成ボタン pos 10, 140 button gosub BUTTON_TITLE_MAKE, *Exe_Make stop // HSPスクリプトファイル参照 *Hsp_Reference // ファイルを開くダイアログを表示する dialog NULL_STR, 16, DIALOG_TITLE_HSP_FILE // HSPスクリプトファイル名が選択された場合 if stat { // HSPスクリプトファイル名入力欄に // 選択されたファイル名を設定する objprm 0, refstr // HSPスクリプトファイル名が選択されなかった場合 } else { } return // 実行ファイル作成 *Exe_Make // 実行ファイル名が入力されていない場合 if g_strExeFileName = NULL_STR { // 警告メッセージを表示する dialog DIALOG_MESSAGE_NO_INPUT, 0, DIALOG_TITLE_NO_INPUT // 実行ファイル名が入力されている場合 } else { // ランタイム実行ファイルがあるディレクトリに移動する // chdir dir_exe // 選択したスクリプトファイルがあるフォルダに移動する chdir getpath(g_strHspFileName, 32) // HSPCMP.DLLを初期化する // ※コンパイル対象のスクリプトファイルを指定する hsc_ini g_strHspFileName // 出力オブジェクトファイル名を指定する hsc_objname g_strExeFileName // オブジェクトファイルを作成する hsc_comp 0, 0, 0 // PACKFILEマネージャを初期化する // pack_ini getpath(g_strHspFileName, 9) pack_ini g_strExeFileName // DPMファイルを作成する pack_make 0, 0 // 実行ファイルを作成する pack_exe 0 // 結果メッセージを表示する dialog DIALOG_MESSAGE_MAKE_RESULT, 0, DIALOG_TITLE_MAKE_RESULT } return

上記のスレでは、選択したスクリプトファイルを同じフォルダに
実行ファイルを作成するようにしました。
で実行ファイルは作成できましたが、作成されたファイルを実行すると
コマンドプロンプト画面が出力されてエラーになってしまいました・・・。
もう少し調べたいと思います。

ところで、pack_ini命令で、
HSP Document Libraryには、"ファイル名は、拡張子のないものを指定して下さい。"
と記載されていますが、拡張子のないものを指定すると
拡張子がないファイルが作成されて、「開く」をすると
ファイルを開くプログラムを選択しないといけないことに・・・。



ANTARES

リンク

2010/8/22(Sun) 00:09:40|NO.34567


<前略> // HSPCMP.DLLを初期化する // ※コンパイル対象のスクリプトファイルを指定する hsc_ini g_strHspFileName // 出力オブジェクトファイル名を指定する ;hsc_objname g_strExeFileName hsc_objname getpath(g_strHspFileName, 32)+"start.ax" // オブジェクトファイルを作成する hsc_comp 0, 0, 0 buf="start.ax\n" bsave getpath(g_strHspFileName, 32)+"packfile",buf,strlen(buf) // PACKFILEマネージャを初期化する // pack_ini getpath(g_strHspFileName, 9) ;pack_ini g_strExeFileName pack_ini getpath(g_strHspFileName, 1) // DPMファイルを作成する pack_make 0, 0 // 実行ファイルを作成する pack_rt dir_exe+"\\hsprt" pack_exe 0 <後略>



テック

リンク

2010/8/22(Sun) 11:21:19|NO.34569

>ANTARESさん
修正サンプルありがとうございます。
私のスクリプトに足りなかったのは、

packfileを作成する
bsave getpath(g_strHspFileName, 32)+"packfile",buf,strlen(buf)命令と

HSPランタイムファイルを指定する
pack_rt dir_exe+"\\hsprt"命令だったようです。
無事エラーがでない実行ファイルを作成することができました。

bsave命令のほうは、自動で作成されると思い、実装しませんでした。
どうやら自分で作らないといけないようですね。
pack_rt命令は、HSPランタイムファイルがカレントディレクトリにない場合は
指定しなければならないようですね。
これは単純に見逃しておりました。

また、コンパイル対象のスクリプトファイルがあるフォルダに
実行ファイルを作成するように修正くださり、ありがとうございます。

以下に修正スクリプトを組み込んだものを記載しておきます。
※実行ファイルは、コンパイル対象のスクリプトファイルがあるフォルダに
 スクリプトファイル名と同じファイル名で作成されます。

//==================================================================================================== // ファイル名:SampleHsp.hsp // 内   容:exeファイル作成サンプルスクリプト // 作 成 者:テック // 更 新 者:テック // 作 成 日:2010/08/21 // 更 新 日:2010/08/22 // 履   歴:2010/08/21 新規作成 //       2010/08/22 実行ファイル名入力欄を削除 //        bsave命令でpackfileを作成する処理を追加 //        pack_rt命令でHSPランタイムファイル(hsprt)の //        あるフルパス名を指定する処理を追加 // メ   モ: //==================================================================================================== // インクルードファイル #include "hspcmp.as" // マクロの宣言(文字列定数) #define NULL_STR "" #define MES_INPUT_HSP_FILE "1.HSPスクリプトファイル名を入力してください" #define MES_INPUT_EXE_FILE "2.作成する実行ファイル名を入力してください(拡張子を含む)" #define MES_INPUT_EXE_MAKE "2.実行ファイルを作成します" #define BUTTON_TITLE_REFERENCE "参照" #define BUTTON_TITLE_MAKE "作成" #define DIALOG_TITLE_HSP_FILE "HSPスクリプトファイル名" #define DIALOG_TITLE_NO_INPUT "警告メッセージ" #define DIALOG_TITLE_MAKE_RESULT "標準メッセージ" #define DIALOG_MESSAGE_NO_INPUT "ファイル名を指定してください" #define DIALOG_MESSAGE_MAKE_RESULT "実行ファイルが作成されました" // グローバル変数宣言 sdim g_strHspFileName, 256 sdim g_strExeFileName, 256 g_strBufferData = "start.ax\n" g_strPackFileName = "packfile" g_strHspRtPath = "\\hsprt" /*---------- HSPスクリプトファイル名入力欄・関連処理 ----------*/ // HSPスクリプトファイル名入力メッセージ pos 10, 10 mes MES_INPUT_HSP_FILE // HSPスクリプトファイル名入力欄 pos 10, 30 input g_strHspFileName, 400, 20 // HSPスクリプトファイル参照ボタン pos 420, 27 button gosub BUTTON_TITLE_REFERENCE, *Hsp_Reference /*---------- 作成する実行ファイル名入力欄・関連処理 ----------*/ /* // 作成する実行ファイル名入力メッセージ pos 10, 60 mes MES_INPUT_EXE_FILE // 作成する実行ファイル名入力欄 pos 10, 80 input g_strExeFileName, 400, 20 */ /*---------- 実行ファイル作成・関連処理 ----------*/ // 実行ファイル作成メッセージ // pos 10, 110 pos 10, 60 mes MES_INPUT_EXE_MAKE // 実行ファイル作成ボタン // pos 10, 140 pos 10, 90 button gosub BUTTON_TITLE_MAKE, *Exe_Make stop // HSPスクリプトファイル参照 *Hsp_Reference // ファイルを開くダイアログを表示する dialog NULL_STR, 16, DIALOG_TITLE_HSP_FILE // HSPスクリプトファイル名が選択された場合 if stat { // HSPスクリプトファイル名入力欄に // 選択されたファイル名を設定する objprm 0, refstr // HSPスクリプトファイル名が選択されなかった場合 } else { } return // 実行ファイル作成 *Exe_Make // 実行ファイル名が入力されていない場合 // if g_strExeFileName = NULL_STR { // HSPスクリプトファイル名が選択されていない場合 if g_strHspFileName = NULL_STR { // 警告メッセージを表示する dialog DIALOG_MESSAGE_NO_INPUT, 0, DIALOG_TITLE_NO_INPUT // HSPスクリプトファイル名が選択されている場合 } else { // ランタイム実行ファイルがあるディレクトリに移動する // chdir dir_exe // 選択したスクリプトファイルがあるフォルダに移動する chdir getpath(g_strHspFileName, 32) // HSPCMP.DLLを初期化する // ※コンパイル対象のスクリプトファイルを指定する hsc_ini g_strHspFileName // 出力オブジェクトファイル名を指定する // hsc_objname g_strExeFileName hsc_objname getpath(g_strHspFileName, 1) // オブジェクトファイルを作成する hsc_comp 0, 0, 0 // PACKFILEにバッファをセーブする bsave getpath(g_strHspFileName, 32) + g_strPackFileName, g_strBufferData, strlen(g_strBufferData) // PACKFILEマネージャを初期化する // pack_ini getpath(g_strHspFileName, 9) // pack_ini g_strExeFileName pack_ini getpath(g_strHspFileName, 1) // DPMファイルを作成する pack_make 0, 0 // HSPランタイムファイルを指定する // ※HSPランタイムファイル(hsprt)のあるフルパス名を指定する pack_rt dir_exe + g_strHspRtPath // 実行ファイルを作成する pack_exe 0 // 結果メッセージを表示する dialog DIALOG_MESSAGE_MAKE_RESULT, 0, DIALOG_TITLE_MAKE_RESULT } return



ANTARES

リンク

2010/8/23(Mon) 07:36:45|NO.34575

 「これでほんとに動くの?」と不思議に思って実行してみたら
やっぱり動きませんね。



ANTARES

リンク

2010/8/23(Mon) 11:00:40|NO.34577

・エラーチェックをやりましょう
・エラーが起きたらhsc_getmesを使いましょう
・オブジェクト・ファイルとは何かがわかっていないようです。もっと勉強しましょう



backdrop

リンク

2010/10/14(Thu) 23:27:27|NO.35361

プログラム組んでエラーチェック問題なしで発行後のことを考えて組みなおしたらあとは
エディタからCtrl+F9で作成!!!これ鉄則。
あとプリプロセッサとかの命令も最低限#packとか#packoptとか絶対覚えましょう



ONION software Copyright 1997-2018(c) All rights reserved.