ab.com コミュニティ https://www.activebasic.com/forum/ |
|
計算結果がおかしい https://www.activebasic.com/forum/viewtopic.php?t=2638 |
ページ 1 / 1 |
作成者: | 猿渡信吾 [ 2010年5月07日(金) 05:44 ] |
記事の件名: | 計算結果がおかしい |
なんてことはない時間を秒に直すだけの計算なのですが コード: 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.wSecondcの結果が変になります bは正しいので特定の数値のみ結果が変になるようです eの様に分けると結果が正しくなります AB 4.24 Windows XP HOME SP3 まぁ、ABの更新が止まっているので こんな事を書いてもほとんど意味がないと思いますが せめてAB4.24のバグ修正版だけでもでないかなぁと願いつつ。 ABはこれからどうなっていくんでしょう? 作者様からの何らかの発表がほしいです。 |
作成者: | ボン [ 2010年5月07日(金) 06:52 ] |
記事の件名: | |
c = (st.wHour as long *3600) + (st.wMinute *60) これで解決! |
作成者: | 猿渡信吾 [ 2010年5月08日(土) 05:41 ] |
記事の件名: | 計算結果がおかしい |
色々実験してわかったのですが 計算結果が元の型の範囲より大きくなるととおかしなことになるようです。 st.wHour はword型で0~65535 (18 *3600) + (27 *60) + 30=66450 65535を超えているのでその分引かれて914になってしまう。 回避法はボンさんが書かれているとおりキャストすればいいようです。 う~ん、こんな基本的なところにバグがあるとは・・・。 今まで書いてきたコードのすべてをチェックしないと・・・頭が痛くなってきた・・・。 Ver.4.13に戻す方が早いかも・・・他の皆さんはどうしてるんだろうか・・・。 |
作成者: | 猿渡信吾 [ 2010年5月08日(土) 05:54 ] |
記事の件名: | 計算結果がおかしい |
掲示板を見ていたら、今回の問題と同じことが既に書かれていましたね。 ABが放置されて、サイトが重くなって、あんまり見なくなってたんですよねぇ。 失礼しました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |