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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ganas
記事: 19
登録日時: 2006年3月04日(土) 00:39

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

#1 投稿記事 by ganas »

こんにちは。

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


あと、次のプログラムを用いて、キーボードの判定をスレッドで行っていますが、うまく動いていないようです(書かれているもの以外に矢印キーなどもテストしました)。スレッドは起動時に同時に2つ開始し、片方をゲーム処理、そしてもうひとつをキーボードの判定に使用しています(キー状態の取得、スレッドの開始法、スレッドを割り当てる関数(?)の記述、いずれもHelp Centerのものを参考)。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

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

#2 投稿記事 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の処理
ばかりになっていたと思います。
ganas
記事: 19
登録日時: 2006年3月04日(土) 00:39

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

#3 投稿記事 by ganas »

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


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

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