ページ 11

IntegerとLongの構造体

Posted: 2006年10月03日(火) 02:22
by 初学者
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

Re: IntegerとLongの構造体

Posted: 2006年10月03日(火) 17:07
by 7

コード: 全て選択

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
型のサイズが問題なんでしょうかね。

Posted: 2006年10月05日(木) 17:24
by 山本
ご報告ありがとうございます。

7さんの仰るとおり、メンバオフセットの計算モジュールの不具合により、型サイズが正常に判定されておりませんでした。

次回のバージョンアップで修正いたしますので、今しばらくお待ちください。