Selct Caseで構造体は判断できません?

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
ケースケ
記事: 45
登録日時: 2005年5月31日(火) 23:46
お住まい: 愛知県
連絡する:

Selct Caseで構造体は判断できません?

#1 投稿記事 by ケースケ »

このプログラムが、AB4.1で動作してくれません。
AB3.Xの頃は動いたので、バグだと思うのでここに書きます。

コード: 全て選択


Sub NowTime()
	Dim Msg As BytePtr
	Dim T As SYSTEMTIME
	Dim a As Long
	GetLocalTime(T)

	Msg=calloc(100)
	lstrcpy(Msg,"今日は")
'	a=T.wDayOfWeek'  |
'	Select Case a'   |---------この2行と
	Select Case T.wDayOfWeek'--この行のコメントアウトを入れ替ると正しく動きます。
		Case 0
			lstrcat(Msg,"(日)")
		Case 1
			lstrcat(Msg,"(月)")
		Case 2
			lstrcat(Msg,"(火)")
		Case 3
			lstrcat(Msg,"(水)")
		Case 4
			lstrcat(Msg,"(木)")
		Case 5
			lstrcat(Msg,"(金)")
		Case 6
			lstrcat(Msg,"(土)")
'		Case Else
'			lstrcat(Msg,"(?)")
	End Select

	lstrcat(Msg,"です。")
	MessageBox(0,Msg,"今日の曜日",MB_OK+MB_ICONASTERISK)
	free(Msg)
End Sub		'正常に関数を抜けることができません。

NowTime()

End
このプログラムのように、Selectで判断させる数値を構造体にすると、Caseの全てが実行されます。
通常の変数に代入してやるときちんと動きます。
Case Else を入れるとまた違った動作をします。
それと、Selectがきちんと動作しなかった時はEndSubの時にアクセス違反を起こします。が、それがどこかよく分かりません。

よろしくお願いします。

XP SP1,256MBでエラー発生確認です。
高信期

#2 投稿記事 by 高信期 »

Select Case ステートメント自体がだめっぽいです。
以下のコードで「例外処理 Code:XXXXXXXX」と表示されたダイアログが出てしまいます。

コード: 全て選択

#prompt
Select Case Asc("a")
  Case 0
    Print "NULLです"
  Case &H61
    Print "aです"
  Case Else
    Print "よくわかりません"
End Select

山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#3 投稿記事 by 山本 »

ご報告ありがとうございます。

16ビット、8ビットの型の値をSelect Caseに指定すると正常にコンパイルできていないバグを確認しました。

原因がわかりましたので、次回のバージョンアップで修正します。
返信する