Вопрос

Я заметил, что EStackOverflow, как определено в SysUtils.pas, помечен как устаревший в Delphi 2009.Я проверил, и в 2007 году он также был помечен как устаревший.У меня здесь есть установочный диск Delphi 7, но я подумал, что хотел бы спросить, знает ли кто-нибудь, когда он устарел.

Кроме того, кто-нибудь знает, почему и что его заменяет?Я написал тестовое приложение, которое вызывает переполнение стека посредством рекурсии, и я все еще получаю исключение EStackOverflow, но если я добавлю обработчик специально для него, то получу

[Предупреждение DCC] Unit57.pas(85):Символ W1000 "EStackOverflow" устарел

Я знаю, что EStackOverflow происходит от EExternal, и что я мог бы перехватить EExternal и проверить ExceptionCode на STATUS_STACK_OVERFLOW, но это кажется ненужным, поскольку оно все равно выдает исключение EStackOverflow.

Это просто для того, чтобы отговорить меня от использования EStackOverflow в моем собственном коде?

(Да, я понимаю иронию того, что задаю вопрос о Обратный поток на веб-сайте под названием Переполнение стека, и да Я совершенно серьезен.)

Это было полезно?

Решение

У меня здесь нет D5, чтобы сказать, но я едва помню устаревший директива появилась только на D6.

Что касается исключения StackOverflow, я думаю, что оно устарело, потому что его может вызвать только среда выполнения Delphi.

Редактировать:Основываясь на совокупности всех ответов, EStackOverflow устарел в Delphi 6, когда было введено ключевое слово Deprecated.

Другие советы

Точно так же, как в .NET, вы действительно не можете поймать исключение StackOverflow, к чему вы восстанавливаетесь?Ваш код, скорее всего, неправильный, если вам нужно его отловить :)

Я только что проверил свой Delphi 6, и EStackOverflow уже устарел.Здесь у меня нет доступа к более старым версиям Delphi.

Я не могу помочь вам с объяснением причин или возможной заменой.

В Delphi 5 это еще не устарело.

Редактировать:На самом деле, в Delphi 5 "устаревший" не является зарезервированным словом.

Это просто для того, чтобы отговорить меня от использования EStackOverflow в моем собственном коде?

Что еще более важно, я думаю, это означает, что вы не должны разрабатывать код так, чтобы он зависел от его использования в будущих версиях.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top