PDA

Ver la Versión Completa : Error en Formulario Auxiliar


jzk
20-09-2004, 12:16:24
Hola a todas/os,

Tengo una aplicación desde donde el formulario principal llama a otro a auxiliar de la siguiente manera:

var f : TForm3histor;
begin
Try
f:=TForm3histor.create(self); //creas el formulario
f.ShowModal; //lo muestras
f.free; //liberas memoria formulario Importante
Except
on EAccessViolation do
Messagedlg('FPrincipal: Problemas',mtInformation,[mbOk],0);
End;
End;

Pero cuando intento ejecutar el programa, me genera un mensaje de error tal que así;

Project project1.exe raised exception class EAccessViolation with message 'Violación de accesso a la dirección 00000000. Leer de direccion 00000000.'. Process stopped. Use Step o Run to continue.

Lo curioso es que la mayoria de ocasiones (90%) me falla el programa, pero sin embargo en otras me abre el formulario auxiliar.¿Estoy haciendo algo mal?

Neftali [Germán.Estévez]
20-09-2004, 13:32:21
¿Dónde tienes éste código? ¿No los tendrás en el evento OnCreate? Si es así muévelo al OnShow.
Prueba a cambiar el Self del create por un Application.

Yo también revisaría qué haces en el OnCreate/OnShow del secundario.
Otra prueba que se me ocurre, prueba a poner éste form como autocreate; Dependiendo de si falla o funciona OK, te dirá si el error puede ser del auxiliar o si es del principal.

Gydba
20-09-2004, 14:07:59
Hola, la verdad es que esto me desorienta un poco:
Lo curioso es que la mayoria de ocasiones (90%) me falla el programa, pero sin embargo en otras me abre el formulario auxiliar.¿Estoy haciendo algo mal?

Tendrías que darnos más info sobre lo que querés hacer, porque la verdad es que por lo menos a mi se me ocurren mil cosas para decirte pero nada específico.

jzk
20-09-2004, 16:41:08
Primero agradecer a neftali y Gydba el interés mostrado.

He creado un nuevo objeto, un botón simple y llano, y en él he vuelto a escribir el código para generar un nuevo objeto, tal y como he explicado anteriormente, y cual es mi sorpresa que ahora si que funciona correctamente sin ningún tipo de problema, se crea el formulario auxiliar y me permite trabajar en él.

¿Que me cuelguen si entiendo algo?, esto es de locos.

marto
20-09-2004, 16:52:47
Wop!
He creado un nuevo objeto, un botón simple y llano, y en él he vuelto a escribir el código...

¿Y antes dónde lo tenias?

jzk
20-09-2004, 17:03:27
Anteriormente lo tenia en el evento OnDblClick de una de las 3 páginas de un objeto TPageControl.

¿Se te ocurre algo?

marto
20-09-2004, 17:10:55
Wop!


¿Se te ocurre algo?

Sí, se me ocurre que te olvidas de explicarnos algo ;)

El código que nos muestras es correcto salvo por una linea



on EAccessViolation do


Que debería ser:

on E: EAccessViolation do


Pero asumo que es un error de escritura, ya que sinó no compilaría. Además, esa línea la puedes suprimir, ya que no haces uso de la excepción. Además, ten en cuenta que de ese modo solo capturarás ese tipo de excepciones.
Yo creo que tienes que hacer algo más en otra parte que es la que produce el error. Te recomiendo que depures tu programa y veas exactamente en que línea falla. Si, por ejemplo, es al construir el formulario, examina su constructor o su evento OnCreate.

roman
20-09-2004, 17:27:58
El código que nos muestras es correcto salvo por una linea


Que debería ser:

on E: EAccessViolation do


Pero asumo que es un error de escritura, ya que sinó no compilaría.


Esteee, sí compilará; el uso de la variable E no es necesario.

// Saludos

marto
20-09-2004, 20:58:33
Wop!

Esteee, sí compilará; el uso de la variable E no es necesario.



Estoooo, nolo sabía :o :rolleyes:
y entoces qué se supone, ¿que entra sólo si la excepción es de esa clase pero no tienes acceso al objeto?