// どんなパックファイル名が無効かを検証するスクリプト
// パック用ファイルの作成から生成したスクリプトの実行まで自動的に行います
#include "hspcmp.as"
#define SCRIPT_FILE_NAME "main.hsp"
#define EXE_FILE_NAME "packtest.exe"
#define OBJECT_FILE_NAME "start.ax"
#define PACKFILE_FILE_NAME "packfile"
// チェックするファイル名の配列
fileNames = "123456789012345", "1234567890123456"
// パック用ファイルの作成
notesel _
foreach fileNames
notesave fileNames( cnt )
loop
// スクリプトを生成して保存
sdim script, 4096
script += "#packopt name \"" + EXE_FILE_NAME + "\"\n"
foreach fileNames
script += "#pack \"" + fileNames( cnt ) + "\"\n"
loop
script += "title \"result ->\"\n"
script += "buf = \"\"\n"
foreach fileNames
script += "exist \"" + fileNames( cnt ) + "\":"
script += "if strsize == -1 :"
script += "buf += \"" + fileNames( cnt ) + " is not found. \\n\""
script += ": else :"
script += "buf += \"" + fileNames( cnt ) + " is found. \\n\""
script += "\n"
loop
script += "mesbox buf, ginfo_winx, ginfo_winy\n"
notesel script
notesave SCRIPT_FILE_NAME
// スクリプトの表示
title "code ->"
mesbox script, ginfo_winx, ginfo_winy
// スクリプトから実行ファイルの作成
hsc_ini SCRIPT_FILE_NAME
hsc_objname OBJECT_FILE_NAME
hsc_comp , 4 // make packfile and object file
gosub *error
hsc3_make dir_exe + "\\runtime" // hsp runtime path
gosub *error
gosub *clean
// 実行ファイルの実行
exec EXE_FILE_NAME
stop
*error
if stat == 0 : return
hsc3_messize errorBufSize
sdim errorBuf, errorBufSize+1
hsc_getmes errorBuf
dialog errorBuf
gosub *clean
end
*clean
hsc_bye
// スクリプトとパック用ファイルを削除
exist SCRIPT_FILE_NAME : if strsize != -1 : delete SCRIPT_FILE_NAME
exist OBJECT_FILE_NAME : if strsize != -1 : delete OBJECT_FILE_NAME
exist PACKFILE_FILE_NAME : if strsize != -1 : delete PACKFILE_FILE_NAME
foreach fileNames
exist fileNames( cnt ) : if strsize != -1 : delete fileNames( cnt )
loop
return
このスクリプト一つで、パック用ファイルの生成から生成したスクリプトの実行まで行います。 fileNames に色々なファイル名を代入してみて、どんなファイル名が有効でどんなファイル名が無効か分かります(実行結果が found なら有効、 not found なら無効)