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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0505
大富豪Abloadはできて#includeができないんだ!6解決


大富豪A

リンク

2012/5/5(Sat) 22:13:58|NO.46469

hspで再現可能なのか!の続編。
前のやつで初心者でもわかるようなことを言ってしまった北園です。
えー、題名のとおりです。
状況を詳しく説明すると、
まず、メイン(Main.hsp)(以下、メイン)の読み込み側と、次にサブ(sub.hsp)(以下、サブ)の読
みこまれる側を作成。
メインをC:\\Mainに保存してサブをC:\\Main\\Sub二保存します。
メインからchdir dir_cur+"\\Sub" bload "sub.hsp"を読み込むと成功するが、
chdir dir_cur+"\\Sub" #include "sub.hsp"をやると、、

#HSPスクリプトのプリプロセッサver3.3RC1/オニオンソフトウェア1997年から2011年(C)
#[hspdef.as]ファイルを使用します。
>>>>>>>>>>>>>#ソースファイルが見つかりませんでした。[sub.hsp]
#エラー:[?]2行目の
#致命的なエラーが報告されました。

とゆうエラーがでます。
HSPが矛盾してませんか?
だって同じ読み込みの命令なのに片方はできて片方はできないなんて。
最強のドリルと最強の金属くらい矛盾してます。
名前もあってるし、mesで表示してみたけど"c:\\Main\\Sub"になってました。
僕のPCは天変地異をおこしたんですか?ファイルがこわれたんですか?
Windowsが勝負をしかけてきたんですか?ほこたてがカメラをまわしてるんですか?
解決方法を教えてください。



この記事に返信する


匿名希望

リンク

2012/5/5(Sat) 22:29:56|NO.46470


#include
は、

chdir
で指定されたカレントディレクトリを無視して、現在のスクリプトがあるフォルダから、対象のスクリプトを探します
なので

chdir dir_cur+"\\Sub" #include "sub.hsp"
ではなく、

#include "sub\\sub.hsp"
のように指定してください



TMKL

リンク

2012/5/5(Sat) 22:44:28|NO.46471

あとは、commonフォルダに入れるとかですかね
>同じ読み込みの命令なのに
(・_・;)



レノス

リンク

2012/5/5(Sat) 23:12:56|NO.46472

「プリプロセッサ命令」
について調べてください。
ドキュメントのどこかにあるかと。

そもそも #include と bload では挙動が全然違うので
同一視しようとするのは無理がありますよね……。



check

リンク

2012/5/6(Sun) 00:13:35|NO.46473

どうして氏は愚痴を叫ぶことはできても情報を調べることができないんだ!

#include ≠ bload なのは自分でも理解しているだろう。



M

リンク

2012/5/6(Sun) 02:47:42|NO.46475

同じ読み込み命令でも、bloadはプログラム実行後に動作するのに対し、#includeはプログラムが実行される前に動作します。

それぞれの命令が実行されるまでの流れを簡単に説明しますと、
bloadは、
「コンパイル開始→.exeファイルが出来る→.exeファイルを実行→bload命令が動く」
と処理が進みますが、#includeは、
「コンパイル開始→#include命令が動く→.exeファイルが出来る→.exeファイルを実行」
と進みます。

chdir dir_cur+"\\Sub" #include "sub.hsp"でエラーが出る件についてですが、
chdirもbload同様、.exeファイルが実行された後に動く命令ですので、

chdir dir_cur+"\\Sub" ;.exeファイルを実行した後に動く命令 #include "sub.hsp" ;.exeファイルができる前に動く命令
と書いても、実際に動く順番は、

#include "sub.hsp" ;.exeファイルができる前に動く命令 ;↓ chdir dir_cur+"\\Sub" ;.exeファイルを実行した後に動く命令
と、なるからです。

ほとんどすべての命令は、.exeファイルを実行した後に動きます。しかし、頭に「#」がつく命令は、.exeファイルができる前に動作します(.exeファイルができた時点で、すでに動作を終えている)。
同じ読み込みの命令なのに片方はできて片方はできないないのは、その命令がどのタイミングで動くか?の違いです。

解決方法は、先にどなたかが示してくださったように

#include "sub\\sub.hsp"
と、ディレクトリ名を含めた形で指定し、直接、そのディレクトリの中にあるファイルを読み込ませるようにするのが、良いんじゃないかと思います。

ほこたてがカメラをまわしている姿を見たかった気もするのですが、以上、すべてHSPの仕様上の正常な動作なので、あきらめるよりほかありません。



大富豪A

リンク

2012/5/6(Sun) 10:17:46|NO.46477

>匿名希望,レノス,check,M様
なるほど!かいけつしました。



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