ページ 11

[未知の文字列が解放されようとしました。]は深刻なエラーか

Posted: 2006年4月04日(火) 19:04
by ganas
こんにちは。

今、RPG風の、途中で色が付いたりしたメッセージを表示する、プログラムを作っています。
このメッセージの処理を行う部分で、タイトルのようなエラーが発生するみたいですが、これは主にどういう原因で起き、深刻なエラーなのかを教えていただきたいです(ヘルプに載ってない)。


あと、次のプログラムを用いて、キーボードの判定をスレッドで行っていますが、うまく動いていないようです(書かれているもの以外に矢印キーなどもテストしました)。スレッドは起動時に同時に2つ開始し、片方をゲーム処理、そしてもうひとつをキーボードの判定に使用しています(キー状態の取得、スレッドの開始法、スレッドを割り当てる関数(?)の記述、いずれもHelp Centerのものを参考)。

Re: [未知の文字列が解放されようとしました。]は深刻なエラーか

Posted: 2006年4月04日(火) 21:51
by ノッチ
一つ目の未知の文字列に関しては、特定条件(詳細不明)で発生するようですが、
深刻かどうかは不明です。役立たずでごめんなさい。

で、下記の

コード: 全て選択

'キー状態の取得

Function PressKey(code As Long) As BOOL
	If (GetAsyncKeyState(code) And &H8000) = 1 Then
		PressKey = TRUE
	Else
		PressKey = FALSE
	End If
End Function
ですが、関数1行目の
If (GetAsyncKeyState(code) And &H8000) = 1 Then
というのを

コード: 全て選択

If GetAsyncKeyState(code) And &H8000 Then
にすると動作するはずです。
GetAsyncKeyStateの戻り値は、キーが押されている時は、(必ずかどうかはわかりませんが)
&HFFFF8000等になります。
And は論理積ですので、
GetAsyncKeyState(code) And &H8000 の演算結果は&H8000になります。
当然この結果は"1"ではありませんので、元のコードだとFalseの処理
ばかりになっていたと思います。

Re: [未知の文字列が解放されようとしました。]は深刻なエラーか

Posted: 2006年4月04日(火) 22:59
by ganas
> GetAsyncKeyStateの戻り値は、キーが押されている時は、(必ずかどうかはわかりませんが)
> &HFFFF8000等になります。
> And は論理積ですので、
> GetAsyncKeyState(code) And &H8000 の演算結果は&H8000になります。
> 当然この結果は"1"ではありませんので、元のコードだとFalseの処理
> ばかりになっていたと思います。


論理積などはまだよくわかりませんが、説明どおりに修正しましたら、無事動作しました。ありがとうございます。

未知の文字列に関しては、ネットで検索しても有力な情報が得られなかったので、質問しました。