[Lazarus-es] forms enredados II

José Mejuto joshyfun en gmail.com
Lun Dic 20 20:03:32 CET 2010


Hello Paola,

Monday, December 20, 2010, 7:42:35 PM, you wrote:

PB> Hola a todos..
PB> un access violation me está enloqueciendo... :)
PB> a ver si pueden orientarme. Les pongo el esquema de aperturas/cierres de
PB> forms en un ABM.
PB> Si hago esto "tal cual":
PB> entro abm, AGREGAR, CANCELAR (entonces vuelvo al abm), SALIR -> access
PB> violation


PB> formppal:
PB> ========
PB>    Application.CreateForm(TABM,ABM);
PB>    ABM.ShowModal();

Después del ShowModal no haces nada más ?

PB> en ABM:
PB> ========
PB> - onCreate:
PB> Application.CreateForm(TDMPrincipal, DMPrincipal); (abro el datamodule
PB> con la conexión)
PB> apertura de tablas

PB> - onClose:
PB> cierre de tablas
PB> closeAction:= caFree;  //como aca libero el form, no necesito hacer el
PB> freeandnil

FreeAndNil de qué ?

Abre una ventana de linea de comandos y lanza el gdb (el que está en
Lazarus, no recuerdo la carpeta):

C:\MiCarpeta\> gdb miprograma.exe
> r

Haz lo que tengas que hacer, y cuando de el access violation:

> bt

Eso te dará un listado de llamadas hasta la que obtuvo el error e
orden inverso. Probablemente la primera de la linea y 3 o 4 más serán
el SYSTEM$FREE o algo parecido, sin información de debug, pero más
abajo debería de salirte la linea que causa el problema, o bien acabar
en algo como:

$00000000

Lo que quiere decir que en algún punto has accedido a un objeto el
cual era "nil", y en ese caso tendrás que ir "paso a paso" en la
ejecución.

Si te parece pega aquí el resultado del comando "bt" del gdb.

-- 
Best regards,
 José





More information about the Lazarus-es mailing list