VBScript: "Stack overflow at line: 0"
От: Shrike Россия  
Дата: 28.10.04 16:49
Оценка:
Коллеги,
кто-нибудь сталкивался со следующей проблемой?

Создаем html файл следующего содержания:

<html>
<script language="VBScript">
dim nCount
nCount = 0

Class Test
    Sub Ping(a)
        nCount = nCount + 1
        if nCount > 15 then exit sub
        Me.Ping a
    End Sub
End Class


Sub window_onLoad
    on error resume next
    Set o = New Test
    o.Ping "a"
    MsgBox nCount & vbCr & Err.Description
End Sub

</script>
</html>


После завершения выполнения скрипта, IE выдает:
"Stack overflow at line: 0"
Причем стек разворачивается обратно. Никакой ошибки VBS-runtime не возникает.
Смысл здесь в вызове методов объектов.Рекурсия непричем. Можно сделать последовательные вызовы разных методов, это не играет роли. Вызовы window.имя_глобальной_функции приводят к тому же.

Попробовали даже так извратиться:

<HTML>
<HEAD>
    <SCRIPT LANGUAGE="VBScript">
    Option explicit
    
    dim oVBS
    
    Sub IinitializeVbsEngine()
        set oVBS = createObject("MSScriptControl.ScriptControl")
        oVBS.Language = "VBScript"
        oVBS.AddObject "window", window, true
    End sub

    Class Test
        public nCount
        
        function Ping(a)
            nCount = nCount + 1
            if nCount > 15 then 
                exit function
            end if
            Me.Ping a
        End function
    End Class

    Sub Window_OnLoad()
        MsgBox "Start"
        IinitializeVbsEngine                
        oVBS.AddObject "Test", new Test, true
        oVBS.ExecuteStatement "Ping 10"
    End sub
        
    </SCRIPT>
</HEAD>


Результат тот же!
Shrike
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.