ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 23:38

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 
作成者 メッセージ
 記事の件名: 計算結果がおかしい
投稿記事Posted: 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.wSecond
cの結果が変になります
bは正しいので特定の数値のみ結果が変になるようです
eの様に分けると結果が正しくなります

AB 4.24
Windows XP HOME SP3


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

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


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2010年5月07日(金) 06:52 
c = (st.wHour as long *3600) + (st.wMinute *60)
これで解決!


通報する
ページトップ
   
 記事の件名: 計算結果がおかしい
投稿記事Posted: 2010年5月08日(土) 05:41 
色々実験してわかったのですが
計算結果が元の型の範囲より大きくなるととおかしなことになるようです。

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

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

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


通報する
ページトップ
   
 記事の件名: 計算結果がおかしい
投稿記事Posted: 2010年5月08日(土) 05:54 
掲示板を見ていたら、今回の問題と同じことが既に書かれていましたね。
ABが放置されて、サイトが重くなって、あんまり見なくなってたんですよねぇ。
失礼しました。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 4 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[10人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean