LOWORD・LOBYTE関数について

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ポテト

LOWORD・LOBYTE関数について

#1 投稿記事 by ポテト »

掲示板の書き方がよくわからないのですが、宜しくお願いします。
バージョンAB4.04ではコンパイルできたのですが、
バージョンAB4.11r01最新バージョンではエラーが出てしまいます。

22 HiWord = HIWORD(l_xy) 'HWORD
23 LoWord = LOWORD(l_xy) 'LWORD
24 HiByteH = HIBYTE(HiWord) 'H**000000
25 LoByteH = LOBYTE(HiWord) 'H00**0000
26 HiByteL = HIBYTE(LoWord) 'H0000**00
27 LoByteL = LOBYTE(LoWord) 'H000000**

SubRtn.abp(23) - 実数に対してand演算子は利用できません
SubRtn.abp(25) - 実数に対してand演算子は利用できません
SubRtn.abp(27) - 実数に対してand演算子は利用できません

よろしく、お願いします。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#2 投稿記事 by 山本 »

MAKELONG
MAKEWORD
LOWORD
HIWORD
LOBYTE
HIBYTE

これらのマクロの定義でキャスト演算が無効になっていたため、実数型を指定するとエラー扱いになってしまっていました。

次回のバージョンアップでfunction.sbp内の各定義文を修正します。

早急に対応されたいかたは、下記のコードをfunction.sbpの352行目~358行目に上書きしてください。

コード: 全て選択

Const HIBYTE(w) = (((w As Word) >> 8) and &HFF) As Byte
Const LOBYTE(w) = ((w As Word) and &HFF) As Byte
Const HIWORD(dw) = (((dw As DWord) >> 16) and &HFFFF) As Word
Const LOWORD(dw) = ((dw As DWord) and &HFFFF) As Word

Const MAKEWORD(a,b) = (((a As Word) and &HFF) or (((b As Word) and &HFF)<<8)) As Word
Const MAKELONG(a,b) = (((a As DWord) and &HFFFF) or (((b As DWord) and &HFFFF)<<16)) As Long
ポテト

#3 投稿記事 by ポテト »

すばやいご回答、有難う御座います。
さっそく実行したところ、うまくコンパイルできました。
また、よろしくお願いします。
がんばってください。
返信する