別のフォームで宣言した配列を使いたい

解決


ふりかけ  2006-04-18 04:07:37  No: 95100

研究で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


.  2006-04-18 04:23:21  No: 95101

>Form1のモジュール

これの意味がわからない・・・

とにかくデータを共有したいならどこかモジュールを宣言してそこに変数を宣言すればおk


ふりかけ  2006-04-18 04:27:45  No: 95102

モジュールってどう宣言するのですか??(><
どうか教えてください


ふりかけ  2006-04-18 06:02:30  No: 95103

配列型はパブリックで宣言できないんですね


mammal  2006-04-18 06:05:50  No: 95104

文献ってMSDNですか?
慣れないかもだけど、VB使いの言葉を使ってくれないとこっちもわかりにくい。
なら、モジュールレベル変数とかpublicとかprivateとか変数の有効範囲とかを
調べてみては?


mammal  2006-04-18 06:23:49  No: 95105

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

配列のパブリック宣言の話はすっかり忘れてたスマソ


ふりかけ  2006-04-18 19:38:09  No: 95106

>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

モジュールに記述するのですか?記述してもコンパイルエラーになります


ふりかけ  2006-04-18 20:33:45  No: 95107

おさわがせしましたm(..)m
フォームモジュールでは配列のパブリック宣言が無効であることを学びました。
標準モジュールに同じように配列のパブリック宣言をするとうまくいきました。
mammalさん。相談に乗ってくれてありがとうございました!


ガッ  2006-04-18 20:46:20  No: 95108

カプセル化をしていないので著しくバグが面倒になるかもしれませんが、
そこは気をつければいいので大丈夫でしょう :)

個人的には 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

など


mammal  2006-04-18 22:01:22  No: 95109

>public Long get(index1 as integer, index2 as integer)
ごめんなさい、ここが違ってましたねー。おいら最悪。
public Function get(index1 as integer, index2 as integer) As Long
標準モジュールでもフォームモジュールでもいけるはずです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加