配列の個数を可変にするには?

解決


VBがんばってます  2004-10-06 01:31:58  No: 116793

[開発環境]win2000/vb6.0
度々お世話になっております。
初歩的でお恥ずかしいのですが、配列の使い方が解らず書き込みをさせていただきました。

現在private宣言でフォームの一番上に配列を宣言しています
この配列の個数を可変にしたいのですが、必要とするプロシージャで
呼び出されるたびにReDimを使うとメモリ領域を取り直してしまう為
前回該当プロシージャを呼び出した際に格納していた値がクリアされてしまいます。

できれば、配列の個数は明示的に指定するのではなく、可変としてうまく処理したいのですが、何かよい方法はないでしょうか?

'---ここがフォームの一番上にかかれています
private hairetu() as string
private cnt as integer

'---以下、プロシージャ
Redim hairetu(cnt) = No
hairetu(cnt) = No
cnt = cnt+1

呼び出されるたびにこのような記述をしていると、配列に代入した前回の値がなくなってしまいます。
どうかよろしくお願いします。


魔界の仮面弁士  2004-10-06 01:35:15  No: 116794

ReDim時に、『Preserve』を指定する事で解決できるかと思います。

ただ、サイズの増減が頻繁に行われるようであれば、配列よりも
Collection等を用いたほうが、処理としては楽になるかもしれません。


ぴろあき  2004-10-06 01:36:49  No: 116795

MSDNの『Redim ステートメント』のPreserveを注意して見てください。


VBがんばってます  2004-10-06 01:46:51  No: 116796

魔界の仮面弁士さん、ぴろあきさん、即レスありがとうございました。
ご教授いただいたPreserveを使用したところ見事望みの動きをしてくれました。

初歩的な質問にもかかわらずありがとうございました!!

#Collectionオブジェクトですが、配列に番号だけ保持したいので
役割としてはCollectionじゃなくてよいかと思ってそうしております。


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

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






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