2014-07-14 1 views
1

CSV 파일에서 생성 된 배열을 반복하는 for 루프가 있습니다. 이렇게하면 1, 2 또는 3 세트의 숫자가있는 배열이 만들어집니다. 문제는 웹 양식에서 나중에 사용해야 할 변수를 할당해야한다는 것입니다. 또한; 때로는 배열에 단지 1 세트의 숫자가있을 수 있습니다 (따라서 array (1) 만 가능할 수 있습니다). 동적 배열을 개별 변수에 할당하는 방법은 무엇입니까? 예 : YXVal, RXVal 및 X의 경우 GXVal, Y의 경우 YYVal, RYVAL 및 GYVal - 배열에 1이 있으면 YXVal 및 YYVal이됩니다.for 루프의 배열에서 변수 할당 VBScript/Classic ASP

Do while NOT objTextFile.AtEndOfStream 
    arrStr = split(objTextFile.ReadLine,",") 
    for x = 1 to ubound(arrStr) 
     if arrStr(0) = "x" Then   
      Xval = arrStr(x)    
      response.write(XVal & "<br />") 
     end if 
    next  
    for y = 1 to ubound(arrStr) 
     if arrStr(0) = "y" Then 
      Yval = arrStr(y)    
      response.write(YVal & "<br />") 
     end if 
    next     
Loop 
+0

파일에''x "'및'"y "'의 _one_ 발생이 예상됩니까? – Bond

답변

4

다음은 간단한 방법입니다. 이 많은 경우 번이 "x""y"이므로 각 발생을 처리해야 할 때 각 반복의 시작 부분에서 변수 값을 다시 초기화해야합니다. 그렇지 않은 경우에는 에서 마지막으로 반복의 값이 계속 포함될 수 있습니다.

Do Until objTextFile.AtEndOfStream 

    ' Reinitialize variable values. This may be optional, depending on your needs. 
    YXVal = "" : RXVal = "" : GXVal = "" : YYVal = "" : RYVal = "" : GYVal = "" 

    ' Read a line... 
    arrStr = Split(objTextFile.ReadLine, ",") 
    intSize = UBound(arrStr) 

    If intSize >= 0 Then 

     ' Parse line values... 
     Select Case LCase(arrStr(0)) 
      Case "x" 
       If intSize > 0 Then YXVal = arrStr(1) 
       If intSize > 1 Then RXVal = arrStr(2) 
       If intSize > 2 Then GXVal = arrStr(3) 
      Case "y" 
       If intSize > 0 Then YYVal = arrStr(1) 
       If intSize > 1 Then RYVal = arrStr(2) 
       If intSize > 2 Then GYVal = arrStr(3) 
     End Select 

    End If 

Loop 
+0

많은 감사합니다 - 일반적으로 1 또는 3 개의 결과가 있는데, 나는 2가 나오지 않을 것이라고 생각하지만 코드를 사용하면'Select Case LCase (arrStr (0)) '오류 코드가' 아래 첨자가 범위를 벗어났습니다 : '[number : 0]' – Hyperjase

+2

아마 소스 파일에 빈 줄이 있습니다. 테스트를 위해 If 문을 추가했습니다. – Bond

+0

Spot on - 나 혼란스러워하는 간단한 일들입니다 :) – Hyperjase