ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 20:10

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




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - リテラル値同士の演算結果
作成者 メッセージ
  記事の件名:  AB424サンプルのCDPlayerのTrackBarの設定について  引用付きで返信する
同じ現象かと思われましたので、ぶら下がらせていただきます。
プログラミング質問板のほうで、質問立てているのですが、
サンプルのCDPlayerの中の、Sub MainWnd_PlayButton_Clickのなかで、
nMax = (MCI_MSF_MINUTE(msp.dwReturn) * 60 + MCI_MSF_SECOND(msp.dwReturn)) * 10
SendMessage(hTrackBar,TBM_SETRANGE,0,MAKELONG(0,nMax))
で設定していますが、MessageBoxを使って調べてみると、nMaxの値が変な値になっています。
nMaxを使わず、
SendMessage(hTrackBar,TBM_SETRANGE,0,MAKELONG(0,(MCI_MSF_MINUTE(msp.dwReturn) * 60 + MCI_MSF_SECOND(msp.dwReturn)) * 10))
とすると正常に動きます。
nMax = (60 * MCI_MSF_MINUTE(msp.dwReturn) + MCI_MSF_SECOND(msp.dwReturn)) * 10とすると、問題なく動きますと教えていただきました。
しかし、nMaxを使わない場合と、MessageBoxで(MCI_MSF_MINUTE(msp.dwReturn) * 60 + MCI_MSF_SECOND(msp.dwReturn)) * 10とした場合は、正常な値となります。
このスレの現象と同じものでしょうか?
よろしくお願いします。
投稿記事 Posted: 2006年7月25日(火) 14:39
  記事の件名:   引用付きで返信する
ご報告ありがとうございます。
こちらでも現象が確認できました。次回のバージョンアップで修正させていただきます。
投稿記事 Posted: 2006年7月22日(土) 20:36
  記事の件名:   引用付きで返信する
無符号数値が誤って符号拡張されていますね。
明示的に型キャストすれば問題を回避できます。
コード:
a=100*328 As Double
b=100*328 As DWord
c=100*328 As Long
面倒くさいけどね。
投稿記事 Posted: 2006年7月22日(土) 19:42
  記事の件名:  リテラル値同士の演算結果  引用付きで返信する
何時も、お世話に成っています。

 リテラル値同士の乗算演算した結果がおかしいです。(Ver 4.24.00以降)

 全て試した訳ではありませんが、最初に気が付いたのがDouble型で他にも有るのかと
試してみるとLong型,DWord型もでした。
コード:
Dim a As Double
Dim b As DWord
Dim c As Long

'OK
a=328*100
b=328*100
c=328*100
Debug

'NG
a=100*328
b=100*328
c=100*328
Debug
題名に「リテラル値同士・・」と書きましたが、その限りで無いみたいですので、その方も確認お願いします。


宜しくお願いします。
投稿記事 Posted: 2006年7月22日(土) 18:58

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


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