array関数に指定する引数が可変個の場合どうしたらよいでしょうか?

このQ&Aのポイント
  • array関数を使用する際に、可変個の引数を指定する方法について教えてください。
  • 既存のプログラムで取得した配列をarray関数に格納する際に、配列の個数が可変であるため困っています。
  • 配列数を事前に把握することができないため、どのように対応すればよいかわかりません。よい方法はありますか?
回答を見る
  • ベストアンサー

array関数に指定する引数が可変個の場合どうしたらよいでしょうか?

array関数に指定する引数が可変個の場合どうしたらよいでしょうか? arrValue = Array("a","b","c") 上記のように、array関数を使ってvariant型の変数に格納したいのですが、 arrayに指定する個数が可変個の場合、どうやったらよいのでしょうか? arrayに指定する値は、他のプログラムによって 配列型変数"aaa"に格納済みです。 aaaに格納される配列数は可変個のため、 dim aaa() as string で定義して、取得できた数によって Redim で再定義しています。 aaaの配列数に応じて、if文などで、 配列数が1個だったら、arrValue = Array(aaa(0)) 配列数が2個だったら、arrValue = Array(aaa(0),aaa(1)) とすればできないことはないのですが、何個までを想定すればよいかも わからないため、困っています。 何かよい方法はないでしょうか?

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

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

VBのバージョンが不明ですがVB6として array関数を使うまでもなく arrValue = aaa() でVariant型の変数に格納できます

kwang0205
質問者

お礼

無事解決しました。 ありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

配列を別の配列にコピーする http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample049CopyArray.htm こちらではないでしょうか?

kwang0205
質問者

補足

回答ありがとうございます。 教えていただいたサイトは、配列型から配列型へのコピー(全部or一部)のようですね。 今回のものは、コピー先が variant型 である必要があるので違うように思います。

関連するQ&A

  • Array 関数について

    以前、成分解析プログラムで質問したものです。 あれからどうにかこうにかなっていますが、 どうしてもわからないものがあります。 それはArray関数です。 VBSでは「配列が格納されたバリアント型 (Variant) の値を返します。」とありますが、 それに相当する関数の類はVB.NETではいまいちわかりません。 どういう関数を使えばよいのでしょうか?

  • 関数の引数に括弧を使う理由

    VBAを使っていて 関数fffに引数として配列aaaを入れたいとします。 通常 fff(aaa) と指定するところですが fff(aaa()) と括弧を付けて指定する場合もあるようです。 このように括弧を付けるのはどういう理由があったでしょうか?

  • シェルの引数を、実行するパラメータに指定するには?

    シェル初心者です。 シェルの実行パラメータを、その中で実行する処理のパラメータに再び指定したいのですが可能でしょうか。 ただし、パラメータの数は可変です。 環境はSolarisです。 aaa.sh aaa bbb ccc aaa.shの中 bbbコマンド aaa bbb ccc ということを行いたいです。 パラメータ数が固定であれば問題なさそうですが 可変の場合、どのような記述をすればよいでしょうか?

  • 関数の引数として配列を渡す方法

    初めて質問させていただきます。 現在下記のように関数に配列の引数を渡して、配列の個数を表示しているのですが、必ず0件になってしまいます。 <html> <head> <title>連続して関数を呼び出す</title> <script language="JavaScript"> <!-- function aaa (est) { alert(est.length); return; } // --> </script> </head> <body> <script language="JavaScript"> <!-- var hai = new Array(); hai["a"] = true; hai["b"] = false; aaa(hai); // --> </script> </body> </html> もしかしたら、受け渡し方が悪いのかもしれないのですが、色々調べても分からなかったので質問させていただきました。 argumentsというものを使うのかもしれませんがうまくいきませんでした。 分かる方がいらっしゃいましたら、ご教授ください。

  • dimを使わずにredimを使う場合

    VBAを使っていて、 配列数を変数で定義したいのですが、 ネットで検索すると Dim aaaa() as integer Redim aaa(xxx, yyy) あるいは Dim aaaa() Redim aaa(xxx, yyy) as integer のようにdimで変数を定義した後にredimで定義しなおす方法が書かれてあります。 一方で、 Redim aaa(xxx, yyy) as integer のように、dimの定義を省略して、いきなりredimで配列を定義しても 問題なくプログラムは実行できることに気がついたのですが これら二つの方法に違いはあるのでしょうか? 後者を使っても問題ないでしょうか?

  • 関数の仮引数は宣言か式か

    ”関数の仮引数の宣言”は”変数の宣言・定義”と同じように”宣言”と明確に考えるべきなのか”関数の仮引数”を”式”と考えて良いのかという問題です。 私が迷ってしまったのは"配列を仮引数"にとった例です。 規則として ”int a[ ] が int *a と同じ意味になるのは、唯一、関数の仮引数の宣言のばあいだけである”という規則がありますが、これは”関数の仮引数の宣言”は変数の宣言・定義”と同じように”宣言”と明確に考えている例だとおもいます。 int a[ ] が int *a と型名 変数名(引数名)と宣言の形をとっているので当然だと思いますが、一方 配列は、式の中で「先頭へのポインタ」によみかえられる。               ↓ 関数の引数は式なので、配列は「先頭へのポインタ」に読み変えられる←引数部分を”宣言”ではなく”式”と捉えてる←ここが私の迷っているところ               ↓ よって、関数に渡ってくるのは、結局はつねにポインタだ。 という説明もあります。 私の今までの理解ではc言語では”宣言の部分”と”式”の部分は明確に区別されるものと考えていました。”宣言部分の初期化の="と”代入の=”とは明確に区別されていました。 それと同じように”関数の仮引数の宣言”は”宣言部分”と捕らえるのか”式”ととらえるのか ”宣言”と”式”が私の頭の中混乱しています。 宜しくお願いします。

  • mysql_fetch_array関数について

    お世話になります。 mysql_fetch_array(結果セット,受け取り配列タイプ) についてなのですが。 たとえばSQLの結果が複数件ある場合。 while($dtRec=mysql_fetch_array("select * from ***",MYSQL_ASSOC){ $result = $dtRec['aaaaa']; } 解説書には一件づつ受け取る結果の配列を 数値による配列で受け取るなら「MYSQL_NUM] フィールド名をキーとした配列で受け取るなら 「MYSQL_ASSOC」を指定、 両方なら「MYSQL_BOTH」を指定すると 書いてあるのですが、配列の意味が分かりません。 $resultにはEOFになるまで毎回、$dtRec['aaaaa'] の内容が格納されるのではないでしょうか? それとも、$resultにexplode関数のように 配列で件数分格納されるのでしょうか? 現在は、自分で配列に格納しようとしているので・・ (うまくいってません) いくら解説書を読んでも、MYSQL_NUM 、MYSQL_ASSOCの意味がよく理解 できません。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • 引数の可変

    覚えたての引数の可変を使ってみた素人であります。(独学です 見よう見真似で書いた為、目茶苦茶だと思われます。 自分で簡単なexeファイルを作ってみていて 引数の可変が必要となったので付け足そうとしていたのですが、「引数の可変」部の他 意外にもfor文からもエラーが出ました(while使えば済む話なのですが) 今までfor文をあまり使わずwhile文ばかり使っていた為、for文の基本的な構文が失敗しているのかもしれません。折角だから使ってみようとした結果がこれです。 #include <stdio.h> #include <locale.h> #include "DxLib.h" #include <string.h> #include <stdarg.h> int i; ・・・略・・・ class CharsOut{ ____int ypixel; ____char *hangar; ____int size; ____int HowMany; ____int list; public:   ____int CharsOuting(int HowMany,int ypixel,int size,...); }; int CharsOuting(int HowMany,int ypixel,int size,...){ ____va_start(list,HowMany); ____for (i=0;i<HowMany;i++){ ________printf("%s",va_arg(list,char *)); ____} ____va_end(list); ____return 0; } ypixel、size...といった変数等は気にしないでください。 成功していたらコードを足すつもりでした。 自分がやりたいことは、main関数から変数HowMany,*hangar等を受け取り 文字列*hangarを引数の分出力したいのであります。引数の可変は*hangarを何個か渡すつもりだったので使用しました。 こんな感じに使うつもりでしたc.CharsOuting(2,0,32,"I am ", "hangury"); ※リストは(int HowMany,int ypixel,int size,...)です ※ハングリーのスペルが違う等ということはとてつもなくどうでもいいことなのです。 自分で「main関数から*hangarを受け取り」と書いておきながらリストに*hangarがない時点でおかしいと思ってはいるのですが、記述の方法が分からないので書けません。 以下エラー (名前とか一部改変・不要な部分省略 1>------ ビルド開始: プロジェクト:(≡ω≡.), 構成: Debug Win32 ------ 1>コンパイルしています... 1>soucer.cpp 1>error C2040: 'i' : 'int' は 'int [5]' と間接操作のレベルが異なります。 1>error C2065: 'list' : 定義されていない識別子です。 1>error C2440: '=' : 'int' から 'int [5]' に変換できません。 1>配列型への変換はありませんが、参照またはポインタから配列への変換があります。 1>error C2446: '<' : 'int' 型から 'int *' 型への変換ができません。 1>整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。 1>error C2040: '<' : 'int [5]' は 'int' と間接操作のレベルが異なります。 1>error C2105: '++' には左辺値が必要です。 1>error C2065: 'list' : 定義されていない識別子です。 1>error C2065: 'list' : 定義されていない識別子です。 1>ビルドログは "file://c:\・・・\Debug\BuildLog.htm" に保存されました。 1>(≡ω≡.) - エラー 8、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== 文章能力なくて申し訳ありません。 ご回答頂ければ幸いであります。宜しくお願いします。 OS:WinXP コンパイラ:Visual C++

  • [C++/CLI]可変個引数について

    visual studio 2005を使用し、C++で作ったクラスをVBで呼び出せるようにするため、C++でラッパクラスを作成中です。 ネイティブコードで可変個の引数を表すには、 Test(PSTR str, ...){ char ch[1024]; va_list ap; va_start(ap, str); wvsprintf( ch, str, ap ); va_end(ap);       ・       ・       ・ } のようにすればOKだったのですが、マネージコードで可変個の引数を使用するにはどうすれば良いのでしょうか。「ParamArray」というキーワードを使うのでしょうか? また、ラッパクラスではないクラスの可変個引数を使用しているメソッドで、 「warning C4793: 'vararg' : 関数 'DWORD CTest::Log(PSTR,...)' 用にネイティブ コードの生成が発生します」 というワーニングがでています。これは無視しても大丈夫なのでしょうか? 申し訳ございませんが、分かる方がいましたら回答をお願いします。

  • 関数の引数に配列を初期化なしで。

    関数の引数に配列を初期化して渡しているプログラムを目にします。 関数の引数に配列を初期化なしで渡す場合とどう違うのでしょうか? 例 <?php echo tesutoFunc(array('reservation' => 'a','user' => 'b')); function tesutoFunc($arrays=array()){ //ここをなぜtesutoFunc($arrays)と書かないのか? print_r($arrays); } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう