掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Moduleをクラスに移行するには (ID:141839)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
hDeviceHandle は、Dio のインスタンスごとに存在します。 > Private Sub FormMain_Load(省略) Handles MyBase.Load > Dim Dio3232 As Dio = New Dio > Dio3232.Init_DIO() ← Dioを初期化します > End Sub で New した Dio のインスタンスじゃただのローカル変数で、このメソッドを抜ければ使われなくなります。 SetDio を使うときにまた別に Dio を New しているでしょう? そうすると別の Dio ですから別の hDeviceHandle を持つことになります。 メソッドを超えてインスタンスを維持する場合はフィールド(メンバ変数)に置いておかなければなりません。 あ、それから VB6 以前と VB7(VB2002)以降では Integer/Long のサイズが変わっています。あとハンドル/ポインタ用に IntPtr 型が存在しています。 > Public Const RANGE1 As Integer = 1 の様にクラス内でPublicをつけてConst宣言を > しましたが、他のクラスやフォームで参照できませんでした。同じ内容をModuleに > 書くとOKでした。プロジェクト内のすべてのクラス、フォームから参照できる > 定数を宣言するにはModuleに書くしかないのでしょうか? Module の場合はコンパイラが適当に変数名から探してきますが、クラス等に定義した静的メンバ(Const/Shared なもの)を参照するには クラス名.変数名 と記述する必要があります。 どのクラスに存在するものなのかぱっと見で分かる、そのため「どういう機能に属するどういう値なのか」を直感的に記述・読解できる、同名の静的メンバを(別クラスに配置することで)使い分けることができる、などのメリットがあります。 なお、Const 定数は基本的に絶対不変のものに使い(Math.PI とか)、そうでないものは Shared ReadOnly な変数にしておくのがいいでしょう。 > クラスのメソドから直接フォーム上のコントロールを使うのは良くない・・・と > 聞きましたがこのような場合は、クラスの考え方としてどの様にするのが正しい > のでしょうか? メソッドの引数として渡せばいいんじゃないですか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.