計算結果がおかしい

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
猿渡信吾

計算結果がおかしい

#1 投稿記事 by 猿渡信吾 »

なんてことはない時間を秒に直すだけの計算なのですが

コード: 全て選択


	Dim st As SYSTEMTIME
	Dim b As Long, c As Long, e As Long

	st.wYear=2010
	st.wMonth=5
	st.wDay=6
	st.wHour=16
	st.wMinute=37
	st.wSecond=19

	b = (st.wHour *3600) + (st.wMinute *60) + st.wSecond


	st.wYear=2010
	st.wMonth=5
	st.wDay=6
	st.wHour=18
	st.wMinute=27
	st.wSecond=30


	c = (st.wHour *3600) + (st.wMinute *60) + st.wSecond


	e = st.wHour *3600
	e = e + (st.wMinute *60) + st.wSecond
cの結果が変になります
bは正しいので特定の数値のみ結果が変になるようです
eの様に分けると結果が正しくなります

AB 4.24
Windows XP HOME SP3


まぁ、ABの更新が止まっているので
こんな事を書いてもほとんど意味がないと思いますが
せめてAB4.24のバグ修正版だけでもでないかなぁと願いつつ。

ABはこれからどうなっていくんでしょう?
作者様からの何らかの発表がほしいです。
ボン

#2 投稿記事 by ボン »

c = (st.wHour as long *3600) + (st.wMinute *60)
これで解決!
猿渡信吾

計算結果がおかしい

#3 投稿記事 by 猿渡信吾 »

色々実験してわかったのですが
計算結果が元の型の範囲より大きくなるととおかしなことになるようです。

st.wHour はword型で0~65535
(18 *3600) + (27 *60) + 30=66450
65535を超えているのでその分引かれて914になってしまう。

回避法はボンさんが書かれているとおりキャストすればいいようです。

う~ん、こんな基本的なところにバグがあるとは・・・。
今まで書いてきたコードのすべてをチェックしないと・・・頭が痛くなってきた・・・。
Ver.4.13に戻す方が早いかも・・・他の皆さんはどうしてるんだろうか・・・。
猿渡信吾

計算結果がおかしい

#4 投稿記事 by 猿渡信吾 »

掲示板を見ていたら、今回の問題と同じことが既に書かれていましたね。
ABが放置されて、サイトが重くなって、あんまり見なくなってたんですよねぇ。
失礼しました。
返信する