長さ0の2次元の文字列配列(モジュール変数)を作るには?

解決


FJ  2010-05-02 00:09:26  No: 102372

長さ0の2次元の文字列配列(モジュール変数)を作る方法は?
VB6,WinXP

長さ0の配列の作り方は次のページに書かれていたのですが、

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200603/06030072.txt

この配列をモジュール全体で使う必要がありまして、
そのためにはコードウインドウの上の方で Dim文 で宣言しなければなりません。
ところが

Dim a() As String 
a = Array()

としてやると、

「コンパイルエラー  配列には代入できません。」

というエラーが出てしまいます。
(Dim文 がなければ出ないのですが。)

長さ0の配列をモジュール変数として定義するにはどうすればいいでしょうか?

読みずらい文面ですが、どうかよろしくお願いいたします。


れお  2010-05-02 01:36:44  No: 102373

バカはしょうがないなぁ。

キミしか質問してないんじゃないの?(笑)


魔界の仮面弁士  2010-05-03 00:27:55  No: 102374

> Dim a() As String 
> a = Array()

Array は Variant 型の配列を返しますので、
String 型の配列には代入できません。

空の String 配列を必要としているのであれば、
  a = Split("")
を使ってみてください。空の1次元配列が生成されます。

なお、空の2次元配列を生成したいのであれば、
SafeArrayCreate API を使う事になります。


FJ  2010-05-03 01:55:51  No: 102375

魔界の仮面弁士さん、ご回答ありがとうございます。

> Array は Variant 型の配列を返しますので、
> String 型の配列には代入できません。
そうだったのですか。おかげさまで、
Dim a As Variant
a = Array()
としてやることでモジュール変数として長さ0の配列を作ることができました。

> 空の String 配列を必要としているのであれば、
>   a = Split("")
> を使ってみてください。空の1次元配列が生成されます。
こんな裏わざがあったのですね。Splitがこんなことにも使えるなんて驚きです。

> なお、空の2次元配列を生成したいのであれば、
> SafeArrayCreate API を使う事になります。
がんばって勉強してみたいと思います。

大変参考になりました。
ご回答どうもありがとうございました。


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

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






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