Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вычислить ошибку allowed do nesting / 8 сообщений из 8, страница 1 из 1
03.12.2013, 08:05
    #38486875
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
Разбираюсь с чужим проектом, запускаю на компиляцию, выходит ошибка allowed do nesting...
а в каком месте, в каком модуле не понятно, хотя галочки на перекомпиляции и Display Error, стоят...сообщение об ошибке выходит а не показывается где
...
Рейтинг: 0 / 0
03.12.2013, 21:58
    #38488076
Penner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
if .. endif
for .. next
...
...
Рейтинг: 0 / 0
15.12.2013, 19:34
    #38501513
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
q1w1e1, ключевым словом в сообщении "Allowed DO nesting..." является DO. Возможно, слишком большая глубина вызовов подпрограмм через DO.
Поиск в фоксовском хэлпе на эту тему даёт, среди прочего:
The number of nesting levels has been exceeded. For more information, see Visual FoxPro System Capacities.
To exceed the current limit of nesting levels, change the number of nesting levels by including the STACKSIZE setting and the new limit of nesting levels in a configuration file to use when Visual FoxPro starts up. For more information, see Special Terms for Configuration Files.

STACKSIZE = 128 по умолчанию. Увеличивать его можно, пока хватит ресурсов компьютера.
...
Рейтинг: 0 / 0
15.12.2013, 20:29
    #38501542
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
q1w1e1,

Причина может быть в рекурсии, в точ числе неявной
...
Рейтинг: 0 / 0
15.12.2013, 21:24
    #38501569
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
XAndy, загадка в том, что Фоксовский компилятор вряд ли столь умён, что распознает последствия глубокой рекурсии. Следущий код скомпилировался без помех.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PUBLIC m.Count_gn
m.Count_gn = 0
DO Recurs
? 'OK', m.Count_gn

PROCEDURE Recurs
  DO WHILE m.Count_gn < 255
    m.Count_gn = m.Count_gn + 1
    DO Recurs
  ENDDO
ENDPROC && Recurs
Но выполнение дало сбой "Allowed DO nesting...". Так что сбой вылезает из работы самого компилятора. Проект оказался ему не по зубам. Придётся этот проект разбирать руками на составляющие.
...
Рейтинг: 0 / 0
15.12.2013, 21:28
    #38501570
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
Rostislav D. Kudryashov, а когда поставил STACKSIZE = 300 в config.fpw, этот код исполнился без помех
...
Рейтинг: 0 / 0
16.12.2013, 05:54
    #38501725
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
Rostislav D. KudryashovТак что сбой вылезает из работы самого компилятора. Проект оказался ему не по зубам.Ну это совсем уж примитивный пример. А если будет несколько процедур, и чтобы одна другую вызывала только при выполнении каких-либо условий, изменяемых в этих процедурах, что прикажете делать компилятору? Вывести сообщение "подозреваю, что тут при выполнении может возникнуть ошибка, так что компилировать, пожалуй, не буду"? Максимальная глубина рекурсии (и вообще работа рекурсивного кода) - головная боль программиста, никак не компилятора, имхо.
...
Рейтинг: 0 / 0
16.12.2013, 06:29
    #38501731
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычислить ошибку allowed do nesting
Rostislav D. KudryashovRostislav D. Kudryashov, а когда поставил STACKSIZE = 300 в config.fpw, этот код исполнился без помех
Вполне объяснимо если в хэлп заглянуть
helpSTACKSIZE = nValue
Specifies the number of nesting levels from 32 to 64,000 for operations such as the DO command.

Note
You can change the nesting level only during Visual FoxPro startup.

Default: 128
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вычислить ошибку allowed do nesting / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]