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

解決


VBがんばってます  2004-10-05 16:31:58  No: 116793  IP: [192.*.*.*]

[開発環境]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-05 16:35:15  No: 116794  IP: [192.*.*.*]

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

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

編集 削除
ぴろあき  2004-10-05 16:36:49  No: 116795  IP: [192.*.*.*]

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

編集 削除
VBがんばってます  2004-10-05 16:46:51  No: 116796  IP: [192.*.*.*]

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

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

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

編集 削除