Сообщение "Stack overflow" (исключение EStackOverflow)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.43] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Сообщение "Stack overflow" (исключение EStackOverflow)
|
Сообщ.
#1
,
|
|
|
|
Добрый день! Подскажите пожалуйста, когда может появляться сообщение "Stack overflow" (исключение EStackOverflow)?
Стало появляться после того, как написал обработчик события AfterScroll для ADODataSet: ![]() ![]() with DataModule1.UmzDpd do begin if Active=True then begin First; while Eof<>True do begin Edit; if FieldByName('НаличиеРСТ').AsBoolean=True then FieldByName('НаличРСТ').AsString:= 'Да' else FieldByName('НаличРСТ').AsString:= 'Нет'; Next; end; First; end; end; Здесь присваивается значение вычисляемому полю (оно исчезает в гриде всякий раз, как переходишь на другую строку). Метод Post не вызываю. т.к. мне не нужно отправлять в БД, нужно только чтобы показывалось в гриде. Я использую LockType=ItBatchOptimistic (тогда данные в БД отсылаются только методом TADODataSet.UpdateBatch). В чем может быть ошибка? |
|
Сообщ.
#2
,
|
|
|
|
Наиболее вероятна причина - бесконечная рекурсия, в данном случае некие вызовы методов (Next?) внутри обработчика могут косвенно приводить к вызову этого же обработчика
|
|
Сообщ.
#3
,
|
|
|
|
Да, спасибо, так и оказалось, проблема решена.
|