2016-06-21 8 views
2

2次元配列を持つことができる必要があります。基礎。この目的のために、私は、次のコードで他の配列を含む配列を作った:ASP Classic別の配列で保持されている配列の長さを変更する方法(真の2次元配列ではない)

Dim timeline 
    ReDim timeline(days) 

    for reDate = beginDate to endDate 
     timeline(DateDiff("d", beginDate, reDate)) = Array(0) 
    next 

Iが午前問題は、私はReDimステートメントdoesnのように、タイムラインに含まれる配列のいずれかのサイズを変更することができませんということです私がこれをするときにはうまくいかないようです。誰も私がこれについてどうやって行くのか知っていますか?

答えて

0

「動作しません」と、コード/コンテキストのないエラーメッセージ(「オブジェクトが必要です」)が質問をする最良の方法ではありません。最初は完全な時間の無駄です。 2番目のコードはSetを使用しなかったことを示しています(VBScript配列はオブジェクトではないため、コードにはSetが含まれていてはいけません)。

これは指摘@omegastripes同じ事実を示していますが、ヒントは、可能な落とし穴をWRT与える:

Option Explicit 

Dim AoA : AoA = Split("s o m e|w o r d s|o f|d i f f e r e n t|l e n g t h", "|") 
Dim i 
For i = 0 To UBound(AoA) 
    AoA(i) = Split(AoA(i)) 
Next 
WScript.Echo "----- test data:" 
For i = 0 To UBound(AoA) 
    WScript.Echo Join(AoA(i), "") 
Next 
WScript.Echo "----- array assignment copies (For Each elem ... does not 'work'):" 
Dim e 
For Each e In AoA 
    e = "zap" 
Next 
For Each e In AoA 
    WScript.Echo Join(e, "") 
Next 
WScript.Echo "----- array assignment copies (change needs index access):" 
For i = 0 To UBound(AoA) 
    e = AoA(i) 
    e(0) = UCase(e(0)) ' just changes the copy (e) 
    WScript.Echo Join(e, "") 
    AoA(i)(1) = UCase(AoA(i)(1)) ' access via indices changes org collection 
    WScript.Echo Join(AoA(i), "") 
Next 
WScript.Echo "----- replace whole subarrays (re-dimensioned dynamically):" 
Dim n, m 
For i = 0 To UBound(AoA) 
    e = AoA(i) 
    n = UBound(e) 
    ReDim Preserve e(n * 2 + 1) 
    For m = n + 1 To UBound(e) 
     e(m) = UCase(e(m - n - 1)) 
    Next 
    AoA(i) = e ' replace whole element 
    WScript.Echo Join(AoA(i), "") 
Next 

出力:

cscript 37951664.vbs 
----- test data: 
some 
words 
of 
different 
length 
----- array assignment copies (For Each elem ... does not 'work'): 
some 
words 
of 
different 
length 
----- array assignment copies: 
Some 
sOme 
Words 
wOrds 
Of 
oF 
Different 
dIfferent 
Length 
lEngth 
----- replace whole subarrays: 
sOmeSOME 
wOrdsWORDS 
oFOF 
dIfferentDIFFERENT 
lEngthLENGTH 
1

a一時配列変数を用いて以下のスニペット、を試してください。この場合

Dim timeline, a 
ReDim timeline(days) 

' initial fill the array 
For reDate = beginDate to endDate 
    a = Array() 
    ReDim a(99) 
    timeline(DateDiff("d", beginDate, reDate)) = a 
Next 

' redim sub arrays 
For reDate = beginDate to endDate 
    ' assign subarray to a 
    a = timeline(DateDiff("d", beginDate, reDate)) 
    ' redim a 
    ReDim Preserve a(199) 
    ' put changed array into root array 
    timeline(DateDiff("d", beginDate, reDate)) = a 
Next 

を各サブアレイは、最初の100個の要素を含み、REDIM後200。

+0

は、それぞれことサブアレイはないでしょうので、私は日だろうユニークなサブアレイよりもむしろユニークなサブアレイのコピー?割り当てられた後、各個人をどのようにサイズ変更するのですか?とにかくそれをチェックしようとしたときに私はオブジェクトが必要になったので、それは重要ではない – Naiya55

関連する問題