• 締切済み

クラスの使い方が分かりません

使っている環境はVB6.0です。 クラスにデータを入れていき、好きな時に指定したデータを呼び出したりしたいのですが使い方が理解できていないのでわかりません。例えば、 Set A = New clsA     ・     ・     ・ Set A = Nothing とした後で、そのデータを呼び出したり、編集したいのですが、どのようにすれば良いでしょうか?

みんなの回答

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.1

>データを呼び出したり、編集したい ...のであれば Set A = Nothing で入れたデータも消えてしまうので、これの実行前にする 必要が有ります。 clsAにデータの入出力用のプロパティを用意して、それを 介して行います。 例) Set A = New clsA     ・     ・ A.Value = 123     ・ sStr = A.Text     ・     ・ Set A = Nothing

関連するQ&A

  • クラスについて

    基礎が身に付いていないので、凄く変な質問で申し訳ありません。 現在、VB6(SP5)、Windows2000(SP3)の環境で開発中です。 既存のアプリ(ActiveXDLL)の修正をしようとしているのですが、クラスや、コレクションについてよく分からないので困っています。 既存のアプリは、  ・標準モジュール   basA   basB  ・クラスモジュール   clsA   clsB  ・ユーザーコントロール   ctlA から成っています。 今、あるテーブルのフィールドのデフォルト値をコレクション等に保存して、 ctlAのラベルにセットしようとしています。 そこで、新しくコレクションを追加しました。(clsCとclsCのプロパティ?clsD) そのコレクションは、データをセットしたり、セットしたデータを参照したりしたいので、 ctlA内で、   Private objclsC As clsC と宣言し、ctlAの初期処理時に   Set objclsC = New clsC し、ctlAの終了処理時に   Set objclsC = Nothing としました。 また、ctlA内に  ・clsCにデータをセットするためのモジュール と  ・clsCのデータを参照して、ラベルにセットするためのモジュール を追加しました。 このアプリは、複数の他のアプリから参照されているのですが、私が直したら、他のアプリ起動にエラーが発生するようになってしまいました。 「クラス XXX.XXX(コントロール XXX) はロードされていません。」 ctlAにモジュールを追加したのがいけなかったのでしょうか? 一体どういう風に修正すべきなのでしょうか? 自分の理解不足のため、説明も質問内容もきっと分かり辛いと思いますが、どうぞよろしくお願いします。

  • クラス間でのクラスの共有?

    ある処理をするクラスAとログ出力のような動作をするクラスBがあります。 Bクラスはメイン処理及びメインから呼ばれたクラスA両方から呼ばれます。 メイン処理にて、Bクラスのコンストラクタで出力ファイルのパスを指定し その情報をメインから呼ばれたAクラスの中で呼ばれるBでも使用したいと思っています。 クラスを引数として渡せば可能かもしれませんが、できればその方法は使いたくありません。 何か良い方法はありませんでしょうか? void main() { B clsB("c:\\aaa.txt") A clsA; clsA.fnc(); } A::fnc() { clsB.output(); } //Class B.h --------- class B { private: char path[256]; public: B(char *buff); int fnc(); }; //Class B.cpp --------- B::B(char *buff) { strcpy(path, buff); } B::output() { fp = fopen(path, "a"); ・・・ }

  • VBAでクラス設定

    (標準モジュール) Option Explicit Sub test() Dim Class As Class1 Set Class = New Class1 Class.Obj = 1000 Set Class = Nothing Set Class = New Class1 Range("a1").Value = Class.Obj Set Class = Nothing End Sub (クラスモジュールClass1) Option Explicit Private a As Integer Public Property Get Obj() As Integer Obj = 2000 End Property Public Property Let Obj(ByVal NewNumber As Integer) a = NewNumber End Property 上のマクロではやり取り1変数になってますがこれを配列に変えたいのですがどうすればいいでしょうか?

  • 戻り値がクラスオブジェクト

    VB初心者でわからないので教えてください。 ある関数を呼び出して戻り値を取得するのですが、その戻り値がクラスオブジェクトとなっています。いろいろ調べてみましたが、いい結果にヒットしなかったので今回質問してみました。 言語はVB6.0です Function 関数A(A as String, B as String) dim C as Class1 set C = new Class1 Class1で宣言された変数に値を入れる処理     関数A = C end Function イメージはこんな感じです。 すみませんが解決策を教えてください。。。。

  • VB6:クラス名(文字列)からインスタンス

    VB6でクラス名から実体化させることは可能でしょうか。 たとえば、clsTestというクラスがあったとして Dim objTest as Object Set objTest = New ("clsTest") のような感じです。 .NetであればGetTypeでいけそうなのですが・・ よろしくお願いいたします

  • コレクションクラスでクラスを初期化するには

    環境: VC++.Net2008 C++/CLI Windowsフォームアプリケーション .Net、C++どちらも初めてで勉強しながら作業しています。 VB6.0で開発した経験が1回だけあります。 System.Collections.Generic のListジェネリッククラスを使って、 CSVファイルから読み込んだデータをクラスに格納してフォームから入力された値を比較して同じものがあるかないかの判定を行うプログラムを作成しています。 -------------------------------------- /* データを格納するクラス */ ref class A { char* cphoge; int ihoge; } ref class Amgr { List<A^>^ HOGE; Amgr(); //コンストラクタ {     HOGE = gcnew List<A^>(); /* CSV読み込み処理 */ if(もうCapacityがなかったら) { addで増やす } } } ---------------------------------------- CSV読み込み処理内でHOGE.add(クラス)で容量を増やした後、 読み込んだデータを代入しているのですが、 実行時エラーでSystem.nullreferenceexceptionが起きてしまいます。 調べて要は初期化がちゃんとできていない状態でアクセスしようとしたために実行時エラーで落ちたことはわかったのですが、 肝心の初期化の仕方がわかりません。どなたかご存知の方いましたらご教授よろしくお願い致します。

  • Stringクラスは他のクラスとどう違う?

    Objectクラスを抽象クラスとするサブクラスに Stringというクラスがあります。 ストリングオブジェクトの宣言は下記のようにします。 String[] url = new String[2]; ストリングクラスは以下のように宣言時に初期化が可能です。 String[] url = {"honyahonya.com","0"}; また、以下のような指定も出来ます。 this.method( new String[]{"honyahonya.com","0"} ); そこで質問ですが Stringとはなぜこのような扱い方ができるのですか? 他のクラスとは、例外的に扱いが違うだけなのですか? 初期化で指定した文字列はどのように解釈されて、どういう 扱いがされているのでしょうか? 普段はなんとも思わず使っていますが なんとなく気になりませんか・・・。

    • ベストアンサー
    • Java
  • VB6でEXCELをクローズ出来ない

    VB6でEXCELを使用した後クローズ処理をしたつもりですが、VBと別にEXCELを起動しVBで使ったEXCELを読み込もうとすると、「編集のためロックされています」とメッセージが出て、読み取り専用でしかオープン出来ません。また、VBでEXCELを繰り返しオープンするとメモリがいっぱいになってしまいます。 VBでのEXCELオープンは Dim fnm As String Dim exl As Object fnm = "EXCEL File名" 'フルパスで指定 Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm クローズは Set exl = CreateObject("Excel.Application") exl.Application.Quit Set Sheet = Nothing Set BooK = Nothing Set ExcelApp = Nothing 以上です。なお、VBの参考書は入門書だけ持っていますが、このようなことは書いてありません。従って上のコードも意味もわからず、ネットから拾ってきたまま使用しています。参考書または、Webサイトを紹介して頂ければ有り難いです。

  • 抽象クラスを継承した普通のクラスから、

    抽象クラスを継承した普通のクラスから、 抽象クラス内でprotected宣言したクラスのフィールド(連想配列)へ データをセット&ゲットしてみたいのですが、やり方がよく分かりません。 上記内容を満たす簡単なサンプルを誰か作っていただけないでしょうか。 ちなみに、下記は、自分でやろうとして、頭がこんがらがってしまった例です。 あくまでもイメージですが、 こんな感じで、作成していただけると、うれしいです。 <?php abstract class A1{ protected $data = array();   public function setData($value){ $this->data[$key] = $value; } public function getData($key = null){ if (null == $key) { $this->data; } else { $this->data[$key]; } } } class C1 extends A1{ public function main(){ $this->setData('key1') = 'value1'; $this->setData("キー2") = "値2"; } } $c1 = new C1; $c1 -> main(); var_dump($data); ?>

    • ベストアンサー
    • PHP
  • クラスの作成方法を教えてください

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1328191 標記の内容がわからなくうまくいきません 作成したいクラスの内容 ・CSVのデータ1行を表すクラス(CsvQueueクラスとする)  ・メンバー変数は、  その1行のデータとCsvQueueクラスへのポインタ。  データは面倒ならPublic。  ・メンバー関数は、  PutData()とGetData()。 CsvQueueクラス Public strCsvData1 As String Public strCsvData2 As String Public strCsvData3 As String Private queNextData As CsvQueue 初歩的な質問ではございますが、 作成方法を教えてくださいます様、よろしくお願いいたします 以下、参考::::::::::::::::::::: Public Function PutData(ByVal q As CsvQueue) As Boolean  If queNextData Is Nothing Then   Set queNextData = q   Exit Function  End If  PutData = queNextData.PutData(q) End Function Public Function GetData() As CsvData  GetData = queNextData End Function CSV出力モジュール内(追加した行を++で表している) Private csvRoot As CsvData ' Nothingに初期化 Private Sub output(ByVal ofile As String) On Error GoTo trap handle = FreeFile() Open ofile For Append As #handle  Do Until csvRoot Is Nothing   (中略と同内容)   csvRoot = csvRoot.GetData()  Loop (中略) Print #handle, _ Close #handle Exit Sub trap: 'MsgBox Err.number & "," & Err.Description, vbInformation, "output"  Dim csvTemp As New CsvData  csvTemp.strCsvData1 = ...  If csvRoot Is Nothing Then   Set csvRoot = csvTemp  Else   csvRoot.PutData(csvTemp)  End If End Sub

専門家に質問してみよう