Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   La Aplicacion se cierra... (https://www.clubdelphi.com/foros/showthread.php?t=28429)

Luis Castillo 19-12-2005 21:58:38

La Aplicacion se cierra...
 
Colegas....

Tengo un problemita que talvez sea un problemon:

ES sencillo, cuando entro a un modulo del programa....toda la aplicacion se me cierrra...

Creo que es un error algo asi: Stack overflow...algo asi como memoria que se desborda....creo que debo revisar que no se libera...pero a ver si ustedes les ha pasado y pueden decirme alguito.

Les agradesco cualquier ayuda

Luis Castillo

delphi.com.ar 19-12-2005 22:08:56

El Stack es la pila donde se "apilan" todos los punteros de procedimientos, parámetros... Si estas llamando a un procedimiento recursivamente una gran cantidad de veces, desbordarás la pila y veras ese mensaje de error.

Código Delphi [-]
procedure FillStack;
begin
  FillStack; {Cada vez que se llame recursivamente agregará un valor a la pila}
end;

Puedes ver la pila de llamadas (sin sus parámetros) desde el menú View \ Debug Windows \ Call Stack.

Saludos!

Héctor Randolph 19-12-2005 22:10:47

En realidad el mensaje de error te indica que lo que se ha desordado es la pila, seguramente tienes algún procedimiento que se invoca recursivamente y no termina.

Es dificíl que la pila se desborde con la operación normal de una aplicación, revisa bien si existe un procedimiento que se llame a si mismo y entra en un ciclo infinito.

Saludos.

Héctor Randolph 19-12-2005 22:13:11

Se me ha adelantaado Federico, bueno el caso es que las respuestas mas o menos coinciden.

Saludos.

Luis Castillo 19-12-2005 22:32:58

Nota
 
PUes me he dado cuenta que se cierra la aplicacion cuando abro una tabla...

Incluso cuando en en tiempo de diseño abro la tabla, se cierra hasta delphi...

O sea, No es una llamada a un procedimiento

Que opinan

Gracias...

aledieb 19-12-2005 23:06:46

Fijate en los eventos de la tabla, a mi paso algo parecido y era un evento de la tabla que tenia codigo erroneo.

jachguate 19-12-2005 23:53:16

Puede estar ocurriendo una llamada recursiva indirecta:

Suponé el código:

Código Delphi [-]
Procedure a;
begin
  b;
end;

procedure b;
begin
  a;
end;

Irremediablemente ocurrirá un EStackOverflow cuando se llame a el procedimiento a o b.

Es comun entrar en un ciclo recursivo indirecto, por ejemplo, modificando el valor de un campo en su propio evento OnChange, sin una condición que rompa el ciclo recursivo o un control adecuado de la misma.

Te recomiendo tratar de seguir el código paso a paso, observando en todo momento si no estas en esta situación.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 08:01:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi