研究でVB6.0 personal edition を使ってシミュレータを作っているふりかけと申します。
Form1で宣言した配列を、Form3でも使いたいためForm1のモジュール(一番上)にPublic hairetu(20, 20) As Long と宣言して実行したところ
Compile errer:
Constants, fixed-length string, arrays, user defined-types And Declare Statement not allowed as Public members as object modules
というメッセージが警告音とともに表示されます。
僕は、単にForm1のプログラムによって得た配列を、Form3で使いたいだけなのですが、いくら文献を読んでもわかりません。どなたか教えてくれないでしょうかm(。。)m
>Form1のモジュール
これの意味がわからない・・・
とにかくデータを共有したいならどこかモジュールを宣言してそこに変数を宣言すればおk
モジュールってどう宣言するのですか??(><
どうか教えてください
配列型はパブリックで宣言できないんですね
文献ってMSDNですか?
慣れないかもだけど、VB使いの言葉を使ってくれないとこっちもわかりにくい。
なら、モジュールレベル変数とかpublicとかprivateとか変数の有効範囲とかを
調べてみては?
Private hairetu(20, 20) As Long
public sub set(index1 as integer, index2 as integer, data As Long)
hairetu(index1, index2) = data
End Sub
public Long get(index1 as integer, index2 as integer)
get = hairetu(index1, index2)
End Sub
配列のパブリック宣言の話はすっかり忘れてたスマソ
>Private hairetu(20, 20) As Long
>public sub set(index1 as integer, index2 as integer, data As Long)
>hairetu(index1, index2) = data
>End Sub
>public Long get(index1 as integer, index2 as integer)
>get = hairetu(index1, index2)
>End Sub
モジュールに記述するのですか?記述してもコンパイルエラーになります
おさわがせしましたm(..)m
フォームモジュールでは配列のパブリック宣言が無効であることを学びました。
標準モジュールに同じように配列のパブリック宣言をするとうまくいきました。
mammalさん。相談に乗ってくれてありがとうございました!
カプセル化をしていないので著しくバグが面倒になるかもしれませんが、
そこは気をつければいいので大丈夫でしょう :)
個人的には mammal さんの方法が良いと思います
'sample.cls
'といいつつサンプルを書いて載せてみる
private data(1 to 10,1 to 10) as long
public property get InnerData(byval i1 as long,byval i2 as long) as long
InnerData=data(i1,i2)
end property
public property let InnerData(byval i1 as long,byval i2 as long,byval nv as long)
data(i1,i2)=nv
end property
など
>public Long get(index1 as integer, index2 as integer)
ごめんなさい、ここが違ってましたねー。おいら最悪。
public Function get(index1 as integer, index2 as integer) As Long
標準モジュールでもフォームモジュールでもいけるはずです。
ツイート | ![]() |