IntegerとLongの構造体

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
初学者

IntegerとLongの構造体

#1 投稿記事 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
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: IntegerとLongの構造体

#2 投稿記事 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
型のサイズが問題なんでしょうかね。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#3 投稿記事 by 山本 »

ご報告ありがとうございます。

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

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