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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0403
Mina某EXEファイル単独で機能しない5解決


Mina某

リンク

2011/4/3(Sun) 22:37:26|NO.38087

初めまして、お世話になります。

今回、個人使用を目的としてクイズプログラムを作成している途中なのですが、
ある程度形になったので試しにEXEファイルを作成して実行したところ、hspが
存在しているディレクトリでは正常に動作するのですが、そこから動かしてEXE
単体で動作させようとすると内部エラー(13)が発生してしまいます。

PAKFILE機能を用いて必要なファイルを内部に詰め込めば、他のファイルは無く
ても正常に機能すると考えていたのですが、違うのでしょうか。

PAKFILEの対象としたのは以下のスクリプト内に記述されている、

./image/tf.bmp
./image/classroom.jpg
./image/screen.bmp
./image/blackboard.bmp
./image/title.bmp
./tf.txt
./start.ax

を対象としました。


#include "hsp3util.as" #define background 1 #define blackboard 22 #define monitor 21 #define fakemonitor 23 *初期設定 screen 0,640,480,0 title "おすなば" quizcount = 1 *タイトル画面 picload "./image/title.bmp" repeat stick key,0 if key&32: gosub *main wait 1 loop *main redraw 0 gosub *黒板描画 gosub *○× gosub *問題描画 redraw 1 gosub *回答待ち gosub *ボタン演出 gosub *正誤判定 wait 50 quizcount++ goto *main stop //ここから○×用ルーチン *○× choice=0 gosub *○×ボタン notesel quiz noteload "tf.txt" sdim question repeat notemax noteget question.cnt, cnt loop return *○×ボタン buffer 2,360,360 picload "./image/tf.bmp" gsel 0 gmode 4,,,255 color 0,255,0 pos 120,280 gcopy 2,0,0,180,180 pos 340,280 gcopy 2,180,0,180,180 return *○×回答取得 pos 0,0 stick key,256 if key&256{ if mousex>120 & mousex<300 & mousey>280 & mousey<460 : choice = 1 } if key&256{ if mousex>340 & mousex<520 & mousey>280 & mousey<460 : choice = 2 } return *ボタン演出 gsel 0 gmode 4,,,255 color 0,255,0 if choice = 1{ pos 120,280 : gcopy 2,0,180,180,180} if choice = 2{ pos 340,280 : gcopy 2,180,180,180,180} wait 50 return //ここまで○×専用ルーチン ; 以下汎用サブルーチン *黒板描画 //教室背景 buffer background,100,100 picload "./image/classroom.jpg" //フレーム部分 buffer blackboard,520,260 picload "./image/blackboard.bmp" gsel 0 gmode 4,,,255 color 0,255,0 pos 0,0 gcopy background,,,640,480 gmode 4,,,255 pos 60,10 gcopy blackboard,,,520,260 buffer monitor,400,200 picload "./image/screen.bmp" gsel gmode 4,,,200 pos 118,52 gcopy monitor,,,400,200 return *問題描画 a=0 randomize sdim note note = question.rnd(notemax) getstr sentence, note, a, ',' : a=a+strsize sent_length = strsize getstr answer, note, a, ',' : a=a+strsize if sent_length>30{ linelength=30 lines = (sent_length/30)+1 repeat lines linen.cnt = strmid(sentence,cnt*30,30) } loop color 0,0,0 textmode 2 color 255,0,0 pos 300,15 font "MS ゴシック" , 18 , 16 emes "第"+quizcount+"問" font "MS ゴシック" ,25, 16 color 255,255,255 pos 125,60 repeat lines emes linen.cnt loop return *回答待ち repeat onclick gosub *○×回答取得 wait 1 if choice = 1 | choice = 2 : break loop return *正誤判定 if choice = answer : title "正解" if choice ! answer : title "不正解" return stop



この記事に返信する


f(飲酒中)

リンク

2011/4/3(Sun) 22:42:17|NO.38089

マニュアルのPAKFILEの項目をよく読め。

>HSPでは、実行ファイルを作成する際に、読み込まれるファイルをまとめて
>1つの実行ファイルに埋め込むことが可能です。
>これを、ファイルのパックと呼んでおり、まとめるファイル一覧の情報を記録した
>ファイルをパックファイル(PACKFILE)と言います。
>パックファイルには、無制限に複数のファイルを指定することができます。

>パックファイル内で階層を表現することはできません。

>ファイル名は、拡張子も含めて19文字までが識別対象になります。
> (ロングファイル名でも認識します。)
>また、1つの実行ファイルにパックするのではなく、
>独立したファイルにパックすることも可能です。
>この独立したファイルをDPMファイルと呼び、拡張子が「.dpm」になります。



Mina某

リンク

2011/4/3(Sun) 23:04:19|NO.38091

お返事有難う御座います。

階層分けが出来ないことは分かりました。
しかし、その後カレントディレクトリ内に必要なファイルを全て移してス
クリプトの参照位置も直した後、再度EXEファイルを生成させてみたので
すが、これでもうまく行きませんでした。どうやら他に原因があるようです。

何かお気づきの点、あるいは勘違いがありましたら引き続きご指導下さい。



f(飲酒中)

リンク

2011/4/3(Sun) 23:24:15|NO.38093

エラーの13番は「指定画像が無い」だ。
それを踏まえて調べてもらうしかないな。

スクリプト自体実行できるのかね。



Mina某

リンク

2011/4/4(Mon) 00:25:30|NO.38102

お返事有難う御座います。

不要なファイルをすべて排除してから再起動してもう一度やってみたところ、
中身自体は変わっていない筈なのですが何故か上手く行きました。

ご協力有難う御座いました。



パラレルアロー

リンク

2011/4/5(Tue) 07:49:49|NO.38135


いや、その
「HSP Packfile」とかでググってみては…



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