ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
初学者
#1
投稿記事
by 初学者 » 2006年10月03日(火) 02:22
v4.24(WindowsMe)
IntegerとLongの構造体を定義して、たとえば、フォームにボタンを配置し、下のようにした場合、Longの方の値が正しくなりません。
初学者なのでプログラムが間違っているかもしれず、また、前のバージョンでのものですが、一応報告しておきます。
コード: 全て選択
type TESTD2
a as Integer
b as Long
End Type
Sub MainWnd_CommandButton1_Click()
Dim test2 = [3,11] as TESTD2
Stest(VarPtr(test2))
End Sub
Sub Stest(t as *TESTD2)
Dim n as String
n = Str$(t->b)
MessageBox(hMainWnd,StrPtr(n),0,0)
End Sub
7
記事: 473 登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:
#2
投稿記事
by 7 » 2006年10月03日(火) 17:07
コード: 全て選択
Type TESTD2
a as Integer
b as Long
End Type
Sub MainWnd_CommandButton1_Click()
Dim test2 = [3,11] as TESTD2
Debug
Stest(VarPtr(test2))
End Sub
こうしてみた所、初期化代入(?)の時点で値が正しく代入されてないことが分かります。(Ver.5.0 CP3で確認)
Integer型で正しく代入されないならWord型も代入されないんじゃないかと思ったらそうでした。
コード: 全て選択
Type TESTD2
a as Word
b as Long
End Type
Sub MainWnd_CommandButton1_Click()
Dim test2 = [3,11] as TESTD2
Debug
Stest(VarPtr(test2))
End Sub
型のサイズが問題なんでしょうかね。
山本
Site Admin
記事: 535 登録日時: 2005年5月30日(月) 15:08
連絡する:
#3
投稿記事
by 山本 » 2006年10月05日(木) 17:24
ご報告ありがとうございます。
7さんの仰るとおり、メンバオフセットの計算モジュールの不具合により、型サイズが正常に判定されておりませんでした。
次回のバージョンアップで修正いたしますので、今しばらくお待ちください。