• ベストアンサー

ユーザー定義型を引数(VB6.0)

パブリックで定義したユーザー定義型ですが、 同じモジュール内だとTypeで定義した定義型を引数として渡せるのに 違うモジュール間では渡せないのですが これって仕方がないものなのでしょうか。 Cの構造体をポインタで渡せるみたいに。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

標準モジュールで、PUBLICで宣言してください。

sha-girl
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • 関数内で引数の別名称を定義したい

    関数への引数として構造体のポインタを指定しているのですが、 その構造体のある要素については関数内で別名称を使用したいと思っています。 単純化した例をあげますと //child --------------------- typedef struct{ char bookTitle[100]; int pageNum; } Book; //parent --------------------- typedef struct{ Book book[1000]; int bookNum; } Library; void bookSet(Library *lib); という構造体と関数に関してbookSet関数内ではlib->pageNumをpNumという名称で使いたいです。 普通はbookSet(int pNum)と定義して引数に構造体の要素を渡すと思うのですが、その場合プログラムを書き換える(構造体の他のメンバにもアクセスする)時にいちいち引数を指定しなおさなければならず、また引数に何が入っているのかをすべて確認しなければいけないので他の方法を模索しています。 今のところdefineとifdefを使うしかないかなと考えているのですが… 同じような経験をお持ちで、よいアイディアありましたらお待ちしてます。

  • VC6でALTを作成して、VB6やC#で利用する場合の型の定義の仕方

    COM+の引数や型で悩んでいます。 ALTで型が標準(intなど)でないとコンパイルエラーになると解釈して、 型をユーザー定義型(構造体)にしてデータのやり取りをすれば、どんな引数でも送れると思いました。 そして、その際にはポインタ(4バイト)が使われると仮定して、引数をint datとまるで4バイトの数値のようにしました。 (大丈夫か?) そのポインタを受け取り後、構造体のポインタキャストを当てて、ポインタの中身にアクセスできるようにしました。 このようにすると、コンパイルとするとエラー無しになり、戻り値も正しく返されて、これでいけると思ったのですが、 一部望み通りでない結果が出ました。 通常、ポインタで渡された場合、そのポインタを使って中身(ここではc)を変えた場合、反映されるはずでしたが 戻り値とcの値が異なったため、このやり方は正しくないのではないかと思いました。 ALTに詳しい方、以下のやり方のどこが間違っているのでしょうか? まったく分からないまま、VC6でALTを作成してVisualBasic6でテストしました。 まず、VC6でTest1は、 [in] int dat, [out,retval] int* retval 定義は struct S1 int a[10]; int b[10]; int c; } STDMETHODIMP CTest::Test1(int dat, int *retval) { S1* data = (S1 *)dat; data->c = data->a(0) + data->b(0); // ここでは3になっている。 *retval = data->c; return S_OK; } としてできたDLLをVBの参照設定で取得して呼び出した場合 type S1 a(10) as long b(10) as long c as long end type dim x as S1 x.a(0) = 1 x.b(0) = 2 dim dmy as variant dmy = test.Test1( varptr(x) ) dmy値は3で、x.cの値は3ではありませんでした。 int型など一般的な型やユーザー定義型などを引数として解説しているATLの本など ご存知の方、押してください。

  • ユーザ定義関数の引数にクラスのインスタンスを渡すことは可能?

    いつもお世話になっております。 (PHP5.2.5) 質問: ユーザ定義関数の引数に、 「クラスのインスタンス」を渡すことは可能ですか? 例: <?php  //クラスをインスタンス化する。(例:PDOクラス)  $conn = new PDO($dsn,$user,$pass);  //ユーザ定義関数に上記のクラスのインスタンスを与えている  user_func($conn);  //ユーザ定義関数の定義部  function user_func($conn){   $sql = '~SQL文~';   $stmt = $conn->prepare($sql);   :   :処理   :  } ?> 関数に渡すことのできる引数の型について、 なかなか見つけられず、初歩的な質問をしてしまっているかもしれませんが、 どうぞ宜しくお願い致します。        

    • ベストアンサー
    • PHP
  • 関数の引数に複数のユーザ定義型変数を使いたい

    一つの関数の一つのパラメータが異なるユーザ定義型を受けられるようにしたいのですが、どのようにすればいいのでしょうか? Public Type TypeA strCodeA As String intNumA As Integer End Type Public Type TypeB strCodeB As String intNumB As Integer End Type Public Function funcTest(arg1 As Variant) As Integer (略) End Function と記述して関数を Dim datA As TypeA iResult = funcTest(datA) と呼び出そうとすると、次のようなエラーメッセージが表示されて進みません。 コンパイルエラー: パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。

  • VBAでユーザーフォームに引数を渡したい

    標準モジュールからユーザーフォームに引数を渡し、フォーム上で表示させたいのですが、方法がわかりません。 可能でしょうか?教えてください。

  • 構造体を引数で関数へ渡す

    こんばんは。現在C言語を学んでいます。 課題という形で構造体で定義されたデータを関数の引数に当てはめ、データを渡すという処理を行わねばならぬのですが、関数を利用しての構造体の受け渡しが分からず苦戦しております。ご助言頂ければ幸いです。 分かりづらいかとは思いますが下記が私が簡単にですが作ったものとなります。 私の考えている動作プロットとしては 1. 構造体の形式を定義する。 2. 冒頭にて存在する関数を定義 3. main関数内にて構造体に名前を付けて定義し、値を入力より受付 4. do_it_hoge関数に構造体を引数として与え(ここが分からず)関数を呼び出す。 5. 関数内にて引数で受け取った &hoge.a,b,c等を表示するなどしたい。(受け取る方法が分からず) 関数を呼ぶ際にカッコ内に入れるのは構造体の名前のみで良いのでしょうか? (例: do_it_hoge(hoge); のように) また呼び出される関数側の括弧は何を記述するのでしょうか? いつもならint hogehoge, や char hoge, などと宣言しているかと思うのですが。 読みづらく、分かりにくいものかとは思いますが どうぞ宜しくご教授頂ければと思っております。 構造体を触るのが久しぶりだったのでそちらでミスがあるかもしれません。もし何か補足等必要でしたらメッセージ頂ければ返事させていただきたいと思います。 //----------------------------------------------------------------// //構造体HOGEHOGE定義 //----------------------------------------------------------------// typedef struct tagHOGEHOGE { int a,b; int c; }HOGEHOGE; void do_it_hoge();//関数定義。ここでのカッコ内の定義も不明 //----------------------------------------------------------------// // main //----------------------------------------------------------------// void main(){ HOGEHOGE hoge;//hogeをHOGEHOGE利用で定義 scanf("%d,%d",&hoge.a,&hoge.b);//カンマ区切りで代入 scanf("%d",&hoge.c);//数値をhoge.cへ do_it_hoge();//←ここが分からず } //----------------------------------------------------------------// // do_it_hoge 関数。構造体を引数で受け取りたい関数。 //----------------------------------------------------------------// void do_it_hoge(){ // ←括弧内の受け方が分からず // ここでmainで入力された &hoge.aなどを参照して表示したい // 例: printf("hogeA:%d",&hoge.a); } //----------------------------------------------------------------//

  • 構造体配列のポインタを引数に

    こんばんは。 Visual C++ 2008 Express Edition を使っています。 C++のあるプログラム内の関数で、構造体の1次元配列のポインタを引数に取ろうと思っているのですが上手くいきません。 関数の目的としては、関数側と呼び出す側のファイルを分けているので、関数側のグローバルな構造体配列のアドレスに呼び出し側の構造体配列のアドレスを代入することです。 構造体はExampleと型を定義してあります。 ・関数側 Example *global_ex[10]; void GetEx(Example *ex[])  // ←2つ目のエラー {   global_ex = ex;  // ←1つ目のエラー } ・呼び出し側(呼び出し側の関数内)   Example ex[10];   (exの初期化)   GetEx(&ex); ・エラー  error C2440: '=' : 'Example *[]' から 'Example [15]' に変換できません。配列型への変換はありませんが、参照またはポインタから配列への変換があります。  error C2664: 'GetEx' : 1 番目の引数を 'Example (*)[15]' から 'Example *[]' に変換できません。 プログラムとエラーは以上です。 何をすれば解決できるのか、ご存じの方いらっしゃいましたらよろしくおねがいします。 CとC++は独学で学んでいるので偏りがあると思います。 「基本的な○○が分かっていないのでは?」と感じたらその点もご指摘頂けると嬉しいです。。

  • ExcelVBA ユーザ定義関数と定数配列

    2010以降のExcelVBAです ユーザー定義関数として使うfunction 此の引数として 幾つかの項に配列数式、又は定数配列を与えたいのです が、 此の際の 引数の受け方と処理の仕方 此が判りません 例を交え お教え願えないでしょうか? 宜しくお願い致します。

  • C言語での関数の引数の受け渡しについて

    C言語での関数の引数の受け渡しについて教えてもらいたいのです。 char *p=Goo;  というポインタpがmain関数で定義され、このポインタpをある関数 void func(・・・) に渡すことは出来ますか? つまりポインタを実引数として扱うことはできるのかという事ですが・・・ int p=10; とかだったら、 void func(int test) の関数には、main関数で func(p) で仮引数testにわたせると思うんですが・・・ もし出来るようでしたら、関数の渡し方と定義の記述を教えてください。 どうか宜しくお願いします。