VB6にて、
Dim Var() as Integer
ReDim Var(0,1) as Integer
ReDim Preserve Var(1,1) as Integer
のように、二次元配列を、Preserveを使って内容を保持したまま要素数を増したいのですが出来ません。なにかいい方法はないでしょうか。
アドバイスお願いします。
ジャグ配列か、ユーザ定義型の配列にする。
またはVBのPreserveに任せないで、自力で実装するなどでしょうか。
ジャグ配列について詳しく教えて頂けますか。
あまり詳しくないので・・・
VB6ではVariant型が配列を格納できる型なので、これを利用してジャグ配列(配列の配列)を扱うことができます。
例)
Option Explicit
Private Sub Form_Load()
Dim i As Long
Dim j As Long
Dim v As Variant
Dim Jug() As Variant
ReDim Jug(1 To 10)
For i = 1 To 10
ReDim v(1 To 10)
For j = 1 To 10
v(j) = j
Next
v(i) = 0
Jug(i) = v
Next
For i = 1 To 10
v = Jug(i)
For j = 1 To 10
Debug.Print v(j);
Next
Debug.Print
Next
End Sub
ただあまり使い勝手がよくないので、
ユーザ定義型(それも面倒ならクラス)の配列にするのがいいと思います。
ヘルプより
Preserve 省略可能です。既存の配列に格納されている値を失うことなく、配列の最後の次元の要素数を変更する場合に使用する、キーワードです。
とのことなので
>VB6にて、
> Dim Var() as Integer
>
> ReDim Var(0,1) as Integer
> ReDim Preserve Var(1,1) as Integer
>
>のように、二次元配列を、Preserveを使って内容を保持したまま要素数を増>したいのですが出来ません。なにかいい方法はないでしょうか。
>アドバイスお願いします。
最初の次元を増やすことはできないようですね。最後の次元を増やさなくていいのだったら、逆にするとか・・・・だめですかね(^^;
アドバイスありがとうございます。参考にさせて頂きますが他の方法も考えてみるということで解決とします。
ツイート | ![]() |