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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0314
りどこhsc_compのエラー理由9解決


りどこ

リンク

2010/3/14(Sun) 20:41:26|NO.31238


#include "hspcmp.as" file = dir_cur + "\\source\\index.hsp" hsc_ini file hsc_comp mes stat
において、スクリプトエディタからコンパイル+実行(F5)するとエラーなしでコンパイルできるのですが、
このソースを実行ファイル自動生成(Ctrl+F9)でEXEファイルにして実行すると、
同フォルダ内のファイルをコンパイルしようとした時、stat=0なのですが、
別フォルダ内のファイルをコンパイルしようとすると、stat=-1になります。
hsc_compがどんな時にエラーを示すか、どこにも書いてなかったので、手当たり次第に対策をしたのですが、どれも有効ではありませんでした。
hsc_compについて詳しい方、どうか助言をお願いします。



この記事に返信する


りどこ

リンク

2010/3/14(Sun) 21:19:06|NO.31239

どうやら、コンパイルするソースに不具合などがあると、
コンパイルエラーでstatの値が-1や2になるという事がわかりました。
しかし、依然実行ファイルにするとコンパイルできなくなる理由はわかりません。
引き続き宜しくお願いします。



ANTARES

リンク

2010/3/15(Mon) 01:41:15|NO.31241

 要するに、提示されたスクリプトでstatが-1になるという認識で
いいでしょうか? もしそうなら、私の環境では再現しません。
 違うなら、statが-1になるスクリプトを提示してください。

 万一、提示されたスクリプトが複数のフォルダに
対応しているつもりだとしたら、その認識が誤っています。



ANTARES

リンク

2010/3/15(Mon) 01:55:03|NO.31242

 いろいろ考えてみましたが、
スクリプトファイル名あるいはフォルダ名の入力ミスというのが、
唯一の思いついた原因です(HSPが壊れたとかWindowsが壊れたとかを除けば)



りどこ

リンク

2010/3/15(Mon) 03:03:48|NO.31243

恥ずかしながら、stat=-1の原因は、
Index先でインクルードされていたコモンファイルがフォルダ内になかったためでした。
(スクリプトエディタからはコンパイルできた原因も恐らくそれ)

しかし今度はstat=2が返ってきました。
理由は、hsc_getmesで見たところ、
「文法が間違っています」なのですが、間違っている場所が
switch var

という行でした。 hsc_compの引数は0,0,0なので、HSP標準マクロが無効なわけではないと思います。 原因はswitch文だとわかっているのですが、対処方法がわからないので、 どなたかご教授願います。



りどこ

リンク

2010/3/15(Mon) 03:06:11|NO.31244

一応補足ですが、
もちろん、「文法エラー」も
スクリプトエディタからのF5実行だと正常に動作するのですが、
実行ファイルになると、エラーを吐きます。



りどこ

リンク

2010/3/15(Mon) 03:12:14|NO.31245

ん?
これはつまり、コモンファイルを入れてなかった時みたいに、
実はHSP標準マクロはDLLで定義されてて、
hsp3debug.dllみたいにランタイムと同じフォルダに入れないといけないとか…?
可能性ある!てか多分それ!!
でもどれがマクロのdllかわからないから全部コピーして1つずつ消して試してみます。



りどこ

リンク

2010/3/15(Mon) 03:21:50|NO.31246

できた!!
commonフォルダを置いたらできました!!
あでもcommonフォルダの中のどれが犯人(多分標準マクロモジュール?)
なのかはわからないので、親切な方解説お願いします;



check

リンク

2010/3/15(Mon) 17:14:06|NO.31258

・・・・。
HSP標準マクロはその名のとおりマクロであってDLL内の関数郡ではない。

hsc_compathの説明に

hsc_compathが指定されなかった場合は、 hspcmp.dllを使用しているEXEの下にある「common」ディレクトリが参照されます。
と書いてある。

それで、HSPがスクリプトエディタからコンパイルしたときは、HSPスクリプトエディタの
あるディレクトリから実行されたことになる。

もう分かるよな?
上のスクリプトはhsc_compathでパスが設定されてないので、
EXEの下にある「common」ディレクトリが参照される。
HSPのエディタからコンパイルして実行したときは同じディレクトリにcommonフォルダがある、
そのため標準マクロが定義されているhspdef.asをインクルードすることができる。
だが、実行ファイルにしてプログラムを起動させた時には、同じディレクトリにcommonフォルダはなく、
標準マクロをインクルードすることができないのでエラーが出るってわけだ。



りどこ

リンク

2010/3/15(Mon) 17:48:37|NO.31259

ありました!
hspdef.as

中身は
#define
ばっかり 確かにマクロの群れのようです! 標準マクロを有効にするというのは、
#include "hspdef.as"
という事だったのですね。
丁寧な解説ありがとうございました。 あとよく、「自己解決しました」で終わらせてしまう人がいますけど、 プログラミングの掲示板って、過去ログ→情報 の宝庫じゃないですか。 質問するだけしておいて、後生の人の事をかえりみず、 自分は解決したからいいや。っていうのは違うと思うんです。 自己解決した場合、どうやって解決したのかを報告してくれるだけで、 情報資源の増加、繁栄につながると思います。 …生意気言ってすいませんでした。



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