2009-10-22 2 views
2

나는 VBScript 프로그램에서 작업하고 있는데 "Expected Statement"오류가 있습니다. 오류를 찾을 수 없습니다. 이 오류의 샘플을 보았지만 저를 도와주지 않았습니다.VBscript "Expected Statement"오류

저는 VBScript를 처음 사용합니다.

다음은 코드입니다.

Sub SetText(tx, lw) 
    Dim t, l, r, a 

    t = -1 
    l = Len(tx) 
    r = "" 
    a = 0 

    While t < l 
     t = t + 1 
     a = Asc(Mid(tx,t,1)) 

     If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then 
      If a = 32 Then 
       r = r + "&nbsp;" 
      Else 
       r = r + "&#" + Cstr(a) + ";" 
      End If 
     Else 
      r = r + Mid(tx,t,1) 
     End If 

    End While 'The error occurs at the beginning of this statement.' 

    If Not lw Then 
     r = "<pre>" + r + "</pre>" 
    End If 

    r = "<div style='width:auto; height:auto;'>" + r + "</div>"   
    objExplorer.document.body.innerHTML = r 
End Sub 
+3

@abelenky,이 말을 인용하지 말아라. 나는 "나는 도움이 필요하다."와 같은 성명서를 쓸 수있는 행성에 사람들이 있다는 이야기를 들었다. 'Expected Statement'오류가 발생했습니다. 오류를 찾을 수 없습니다. " 어떻게 든 거기에 묻혀있는 질문이 있음을 알아 냈습니다. 나는 그것이 사실인지, 단지 내가 가능성에 대해 개방적이라고 말하는지 모른다 :-) – paxdiablo

+2

@paxdiablo. 나는 당신이 abelenky의 요점을 놓쳤다 고 생각합니다. "질문은 물음표로 끝납니다."자제는 게시물을 이해할 수있는 abelenky의 능력과는 아무런 관련이 없습니다. 포스터에게 문제에 대해 명확하게 생각하게하려는 시도입니다. 사람들의 의견을 질문으로 표현하는 행위는 포스터가 지적하고 싶은 것을 정확하게 지적하는 데 도움이됩니다. 지적한 질문을하지 않고서도, 뇌파의 무작위로 보이는 위험을 안고 있습니다. –

+1

@Kennet, 이렇게 짧은 설명을 읽는 것은 대단히 힘듭니다 :-) 그래도 나는 의심의 유익을 줄 것입니다. 결국 유머러스하게하려고 노력했을뿐입니다. 불행히도 아내를 포함하여 극소수의 사람들이 저의 유머를 이해합니다. – paxdiablo

답변

6

?? 나는 그것이 옳다고 생각하지 않는다.

나는 구문은 생각 :

While counter > 0 
    ... 
Wend 

대신이 시도, 그것은 다른 개선 사항이 있습니다 (I가 Mid베이스 1을 사용 꽤 확신하지 0 기지 - For t = 0 to Len (tx) - 1For t = 1 to Len (tx)을 변경하지 않은 경우) :

Sub SetText (tx, lw) 
    Dim t, r, c, a 

    'Standard prefix and optional pre tag.' 
    r = "<div style='width:auto; height:auto;'>" 
    If Not lw Then 
     r = r + "<pre>" 
    End If 

    'Process each character in string.' 
    For t = 1 to Len (tx) 
     'Get character and code.' 
     c = Mid (tx,t,1) 
     a = Asc (c) 

     'Change "character" if it is one of the special ones.' 
     If a = 32 Then 
      c = "&nbsp;" 
     Else 
      If a >= 160 or a = 60 or a = 62 or a = 38 or a = 34 or a = 39 Then 
       c = "&#" + Cstr (a) + ";" 
      End If 
     End If 

     'Add "character" to result (it may be a string at this point).' 
     r = r + c 
    Next 

    'Optional pre tag and standard suffix.' 
    If Not lw Then 
     r = r + "</pre>" 
    End If 
    r = r + "</div>" 

    'Inject into page.' 
    objExplorer.document.body.innerHTML = r 
End Sub 

나는 철저하게 (물론, 전혀, 정말로) 그렇게 WendEnd While를 교체, 내가 문제가 있는지 알 수 (또는 원래의 솔루션으로 되돌릴 수 있도록하고, possib이 테스트하지 않았습니다 기본 1에 대한 t의 범위 변경 Mid).

+0

"While ... Then"은 어디에서 썼습니까? –

+0

죄송합니다. if 문을 잘못 읽었어야합니다. 아직도, 나는 그것이 끝났다는 것이 아니라 확실하다는 것을 확신한다. – paxdiablo

+1

+1 잘 모르겠 으면 아론 (Aaron)이 올바른지 확인하십시오. 바탕 화면에 코드가있는 .vbs 파일을 만들어 vb 스크립트를 매우 쉽게 프로토 타입 할 수 있습니다. 방금이 작업을 수행하고 예제에서 while 구문을 사용하면 Expected Statement 오류가 발생합니다. wend는 사용자가 수행 한 작업입니다. –

0

은 참조 : http://www.w3schools.com/vbscript/vbscript_looping.asp

paxdiablo's answer 잘 - 당신은 VBScript로 End While를 사용하지 마십시오. 귀하의 코드는 다음과 같아야합니다 :

Sub SetText(tx, lw) 
    Dim t, l, r, a 

    t = -1 
    l = Len(tx) 
    r = "" 
    a = 0 

    While t < l 
     t = t + 1 
     a = Asc(Mid(tx,t,1)) 

     If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then 
      If a = 32 Then 
       r = r + "&nbsp;" 
      Else 
       r = r + "&#" + Cstr(a) + ";" 
      End If 
     Else 
      r = r + Mid(tx,t,1) 
     End If 

    Wend '<---' 

    If Not lw Then 
     r = "<pre>" + r + "</pre>" 
    End If 

    r = "<div style='width:auto; height:auto;'>" + r + "</div>"   
    objExplorer.document.body.innerHTML = r 
End Sub 

마지막으로 나는 그것의 레거시 제어 구조를 확인했으나 일반적으로 권장하지 않습니다. 코드는 아마 정말은 다음과 같아야합니다

Sub SetText(tx, lw) 
    Dim t, l, r, a 

    t = -1 
    l = Len(tx) 
    r = "" 
    a = 0 

    Do While t < l 
     t = t + 1 
     a = Asc(Mid(tx,t,1)) 

     If a >= 160 or a=60 or a=62 or a=38 or a=34 or a=39 or a=32 Then 
      If a = 32 Then 
       r = r + "&nbsp;" 
      Else 
       r = r + "&#" + Cstr(a) + ";" 
      End If 
     Else 
      r = r + Mid(tx,t,1) 
     End If 

    Loop 

    If Not lw Then 
     r = "<pre>" + r + "</pre>" 
    End If 

    r = "<div style='width:auto; height:auto;'>" + r + "</div>"   
    objExplorer.document.body.innerHTML = r 
End Sub 

는 사실, 지금까지의 내가 조언 되겠지만의이 코드의 내용을 잘 알고있는 아마 변경,하지만이 있습니다.