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

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: Selct Caseで構造体は判断できません?

by 山本 » 2005年9月03日(土) 10:25

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

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

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

by 高信期 » 2005年9月03日(土) 01:47

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

コード: 全て選択

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

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

by ケースケ » 2005年9月03日(土) 01:07

このプログラムが、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でエラー発生確認です。

ページトップ