ページ 11

LoadGraphが変なID返してくる

Posted: 2012年12月22日(土) 23:46
by Suikaba

コード:

SetUseASyncLoadFlag( TRUE ); // 確認したところ成功している
int tmp = LoadGraph( "A" ); // 明らかにこんなファイルはない
上記のコードで、Aなんてファイルがないので、tmpには-1が入るのかと予期していました。
が、一見有効に見える数字(67436547等)を返してきまして、とても困っております。

この症状僕だけですかね?そもそもこういう挙動なんでしょうか。
よろしくお願いします。

【開発環境】
Visual Studio 2012 pro
Win7 64bit
C++
DxLib 最新のバージョン

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:01
by softya(ソフト屋)
Dxlib_Init();後に
int tmp = LoadGraph( "A" ); // 明らかにこんなファイルはない
していないと動作が保証されません。それじゃないでしょうか?

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:06
by Suikaba
DxLib_Initはもちろんしていますね。初期化関連は全部チェック済みなので、問題ありません。
また、SetUseASyncLoadFlag関数を呼び出さなければ、ちゃんと要求した-1が返ってきます。

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:12
by softya(ソフト屋)
あっSetUseASyncLoadFlag(TRUE)ですね。
それなら、仮のハンドルが割り当てられるので正しい動作です。
同期した時に初めて本当の結果が得られます。

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:38
by Suikaba
なるほど、そういうことでしたか。ありがとうございます。
しかしそれだと、非同期の場合はLoadGraph呼び出し時に、そのファイル名が有効かどうか判断するにはLoadGraphとは別に処理を書かないといけないんですかね…

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:52
by softya(ソフト屋)
はい、チェックするまでわかりません。
int CheckHandleASyncLoad( int Handle ) ;
でチェックしてください。
戻り値 TRUE:非同期読み込み中 FALSE:非同期読み込みは終了している -1:エラー

まぁ、非同期なので他に方法はないわけです。

Re: LoadGraphが変なID返してくる

Posted: 2012年12月23日(日) 00:57
by Suikaba
そうですよね。丁寧にありがとうございます。
またよろしくお願いします。