2008-11-12 14 views
9

Noté que EStackOverflow, como se define en SysUtils.pas, está marcado como obsoleto en Delphi 2009. Lo revisé y también se marcó como obsoleto en 2007. Aquí tengo un disco de instalación de Delphi 7, pero pensé que podría preguntarle a alguien sabe cuándo fue desaprobado.¿Cuánto tiempo ha estado obsoleto EStackOverflow y qué lo reemplaza?

Además, ¿alguien sabe por qué y qué lo reemplaza? Escribí una aplicación de prueba que provoca un desbordamiento de la pila a través de la repetición, y todavía consigo una excepción EStackOverflow, pero si agrego un controlador específicamente para él entonces consigo

[DCC Aviso] Unit57.pas (85): W1000 símbolo 'EStackOverflow' está obsoleto

sé que EStackOverflow desciende de Eexternal, y que podría atrapar Eexternal y comprobar ExceptionCode para STATUS_STACK_OVERFLOW, pero que parece innecesaria ya que todavía produce la excepción EStackOverflow.

¿Esto es solo para disuadirme de lanzar un EStackOverflow en mi propio código?

(Sí, me doy cuenta de la ironía de hacer una pregunta sobre EStackOverflow en un sitio web llamado Stackoverflow, y sí estoy completamente en serio.)

+0

Lo mismo en Delphi 7 – Jamie

+1

Traté de google para problemas de desbordamiento de pila, y tengo un montón de enlaces en stackoverflow.com ... :-) pero lo hice logra encontrar este. –

Respuesta

4

No tengo D5 aquí para decirlo, pero apenas recuerdo la obsoleta directiva apareció solo en D6.

En cuanto a la excepción de StackOverflow, creo que está en desuso porque solo para Delphi runtime environment lo plantea.

EDIT: basado en el conjunto de todas las respuestas, EStackOverflow quedó en desuso en Delphi 6 cuando se introdujo la palabra clave Deprecated.

2

acabo de revisar mi Delphi 6, y EStackOverflow ya está en desuso. No tengo acceso a versiones anteriores de Delphi aquí.

No puedo ayudarle con el por qué o el posible reemplazo.

1

¿Esto es solo para disuadirme de lanzar un EStackOverflow en mi propio código?

Lo que es más importante, creo que esto significa que no debe diseñar el código para depender de que se publique en versiones futuras.

1

En Delphi 5 todavía no está en desuso.

editar: En realidad, en Delphi 5, 'obsoleto' no es una palabra reservada.

4

Al igual que en .NET, realmente no se puede detectar una excepción de StackOverflow, ¿en qué se recupera? Probablemente su código sea incorrecto si necesita capturar uno :)

+1

De hecho, quiero tener una línea que dice "en EStackOverflow subir"; entonces no lo atrapo Pero puede que tengas razón.En cambio, decidí atrapar EExternal y comprobar ExceptionCode para STATUS_STACK_OVERFLOW –

+0

+1 Gracias por un muy buen consejo – Mawg

Cuestiones relacionadas