とっておきの手土産を教えて

下記VBScripサンプルで2次元動的配列をつかっているのですが
redim preserveでエラになります。
(インデックスが有効範囲にありません)
原因をご伝授ください。
環境 IIS 5.0
Windows XP

index.asp

<%@ LANGUAGE="VBScript" %>
<% 'option explicit %>
<!-- #include file="test.asp" -->
<%
Dim Order()
Dim dat()
call test(Order,dat)
response.write("dat=" & dat(1,2))

%>

test.asp

<%'Option Explicit%>
<%
function test(Order_info,dat)

Dim i
redim dat(0,7)
for i=0 to 1 <- iが0の時はOK,iが1になるとエラー
redim preserve dat(i,7)
dat(i,1)="1"
dat(i,2)="2"
dat(i,3)="3"
dat(i,4)="4"
dat(i,5)="5"
dat(i,6)="6"
next

End function

A 回答 (1件)

ReDimで変更できるのは最終次元の添え字です



dim dat(0,7)
と宣言した場合 変更できるのは 2次元目の7側の次元です
つまり ReDim dat( 0, 8 )や ReDim dat( 0, 3 ) は許されますが
ReDim dat(1,7) など 1次元目の変更は出来ません

直感的ではないかもしれませんが添え字が固定のものを1次元目にして対処してみてはいかがでしょう

redim dat(7,0)
for i=0 to 1
  redim preserve dat(7,i)
  dat(1,i)="1"
  dat(2,i)="2"
  dat(3,i)="3"
  dat(4,i)="4"
  dat(5,i)="5"
  dat(6,i)="6"
next
といった具合で ...

この回答への補足

上手くいきました。
ありがとうございました。

補足日時:2009/05/12 13:47
    • good
    • 1
この回答へのお礼

上手くいきました。
ありがとうございました。

お礼日時:2009/05/12 13:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報