;hsp3.21 ;compile.as HSP コンパイルサンプル 00/04/06 ;EXEファイルの作成 #include "hspcmp.as" ;#func hsc_compath hsc_compath 6 ;hsp2.5では、上のコメントを外すか、外したものをhspcmp.asに追加するか、 ;どちらかが必要 sdim buf,2000 sdim ebuf,2000 ;このスクリプトをexeファイルにして実行する場合のファイル名 exefile="\\compile.exe" ;このスクリプトをEXEファイルにして実行する場合、同じフォルダに ;hspcmp.dllとhsprtが必要です exist dir_exe+exefile if strsize<0 { instdir=dir_cur } else { instdir=dir_exe } ;スクリプト buf="; HSP コンパイルサンプルのためのスクリプト\n" buf+="\n" buf+=";hex2num.as\n" buf+=";16進文字列→数値変換\n" buf+=" screen 0,320,240: gsel 0,1\n" buf+=" dat=\"ba,AB,dE,4F,6c,d,10F\"\n" buf+=" mes dat\n" buf+=" hexstr=\"0123456789AaBbCcDdEeFf\"\n" buf+=" len=strlen(dat)\n" buf+=" p=0\n" buf+=" repeat\n" buf+=" getstr s,dat,p,',' ;データを1個sに取り出す\n" buf+=" val=0 ;変換結果数値の入る変数\n" buf+=" l=strlen(s) ;データの長さ\n" buf+=" repeat l\n" buf+=" t=strmid(s,cnt,1) ;1文字取り出す→t\n" buf+=" c=instr(hexstr,,t) ;次と併せて1桁の16進→数値変換\n" buf+=" if c>10: c=c/2+5\n" buf+=" val=val*16+c ;valの更新\n" buf+=" loop\n" buf+=" mes s+\"→\"+val ;結果表示\n" buf+=" p+=strsize ;ポインタ更新\n" buf+=" if p>=len: break ;終了判定\n" buf+=" loop\n" buf+="stop\n" prgname=instdir+"\\hex2num" srcname=prgname+".hsp" l=strlen(buf): bsave srcname,buf,l ;packfile packname=instdir+"\\packfile" buf="start.ax\n" l=strlen(buf): bsave packname,buf,l ;ソースファイル名の登録 hsc_ini srcname if stat { buf="hsc_ini\n": goto *l_error } ;エラーメッセージ用ファイル名の登録 hsc_refname srcname if stat { buf="hsc_refname\n": goto *l_error } ;オブジェクトファイル名 hsc_objname instdir+"\\start.ax" ;コンパイル+実行の場合は何でもよい if stat { buf="hsc_objname\n": goto *l_error } ;コモンパス hsc_compath dir_exe+"\\common" if stat { buf="hsc_compath\n": goto *l_error } ;コンパイル hsc_comp 0 ;コンパイル+実行の場合は1 if stat { buf="hsc_comp\n": goto *l_error } ;コンパイル+実行の場合は、この後、 ;exec exedir+"\\hsp3.exe "+オブジェクトファイル名 ;で実行させて終わり ;packfileマネージャ初期化 pack_ini prgname if stat { buf="pack_ini\n": goto *l_error } ;ランタイムファイルのパス指定 pack_rt dir_exe+"\\hsprt" if stat { buf="pack_rt\n": goto *l_error } ;オプション設定 pack_opt 640,480,1 ;初期画面サイズとメインウィンドウを非表示にするか if stat { buf="pack_opt\n": goto *l_error } ;dpmファイルの作成 pack_make if stat { buf="pack_make\n": goto *l_error } ;exeファイルの作成 pack_exe 0 ;フルスクリーンモードなら1、スクリーンセーバー作成なら2 if stat { buf="pack_exe\n": goto *l_error } end *l_error hsc_getmes ebuf: buf+=ebuf dialog buf end