Отсутствует место в стеке (Visual Basic)
Обновлен: Ноябрь 2007
Out of stack space (Visual Basic)
Стек — это рабочая область памяти, которая динамически увеличивается или уменьшается в зависимости от потребностей выполняемой программы. Предел стека был превышен.
Для исправления этой ошибки выполните следующие действия:
Убедитесь, что процедуры не являются глубоко вложенными.
Убедитесь, что рекурсивные процедуры завершаются должным образом.
Если для локальных переменных недостаточно места, попробуйте объявить некоторые переменные на уровне модуля. Кроме того, все переменные в процедуре можно объявить статическими, поставив впереди ключевого слова Property, Sub или Function ключевое слово Static. Оператор Static можно также использовать для объявления в процедурах отдельных статических переменных.
Переопределите некоторые строки фиксированной длины как строки переменной длины, поскольку строки фиксированной длины используют большее пространство стека по сравнению со строками переменной длины. Кроме того, строку можно определить на уровне модуля, где ей не требуется место в стеке.
Проверьте число вложенных вызовов функции DoEvents с помощью диалогового окна Calls, в котором можно просмотреть, какие процедуры используют стек.
Убедитесь, что не был запущен "каскад событий", который является результатом включения события, вызывающего процедуру события, которая уже находится в стеке. Каскад событий похож на вызов незаконченной рекурсивной процедуры, однако он не настолько заметен, поскольку вызов выполняется системой Visual Basic и явным образом не определен в коде. Для просмотра процедур, действующих в стеке, используйте диалоговое окно Calls .