>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