動的配列

解決


  2006-01-07 07:13:05  No: 129420

VB6にて、
    Dim Var() as Integer

    ReDim Var(0,1) as Integer
    ReDim Preserve Var(1,1) as Integer

のように、二次元配列を、Preserveを使って内容を保持したまま要素数を増したいのですが出来ません。なにかいい方法はないでしょうか。
アドバイスお願いします。


ガッ  2006-01-07 07:17:20  No: 129421

ジャグ配列か、ユーザ定義型の配列にする。
またはVBのPreserveに任せないで、自力で実装するなどでしょうか。


  2006-01-07 07:27:45  No: 129422

ジャグ配列について詳しく教えて頂けますか。
あまり詳しくないので・・・


ガッ  2006-01-07 08:05:22  No: 129423

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

ただあまり使い勝手がよくないので、
ユーザ定義型(それも面倒ならクラス)の配列にするのがいいと思います。


ぶぶ  2006-01-07 08:24:32  No: 129424

ヘルプより
Preserve 省略可能です。既存の配列に格納されている値を失うことなく、配列の最後の次元の要素数を変更する場合に使用する、キーワードです。 
とのことなので

>VB6にて、
>    Dim Var() as Integer
>
>    ReDim Var(0,1) as Integer
>    ReDim Preserve Var(1,1) as Integer
>
>のように、二次元配列を、Preserveを使って内容を保持したまま要素数を増>したいのですが出来ません。なにかいい方法はないでしょうか。
>アドバイスお願いします。
最初の次元を増やすことはできないようですね。最後の次元を増やさなくていいのだったら、逆にするとか・・・・だめですかね(^^;


  2006-01-07 09:43:35  No: 129425

アドバイスありがとうございます。参考にさせて頂きますが他の方法も考えてみるということで解決とします。


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

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






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