Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2005
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 21
jzk Va por buen camino
Formulario Auxiliar

Hola a tod@s,

Veamos, tengo el siguiente problemilla.

Quiero crear un formulario auxiliar cuando pulso un determinado botón en mi aplicación. Lo hago de la siguiente manera:

Código:
		Try
			 Application.CreateForm(TForm3histor,Faux);
			 Faux.ShowModal;
		Finally
			 Faux.Free;
		End;
El funcionamiento es correcto hasta que ejecuto varias ocasiones este formulario, entonces me aparece un error de memoria tal que así:
Cita:
Violacion de acceso a la dirección 0000000666. Leer de dirección 0000000666
En otras ocasiones al primer intento obtengo este mismo error y tengo que cerrar la aplicación.

He seguido paso a paso el proceso y el error se produce cuando va a ejecutar la linea Faux.Showmodal, porque en el paso anterior que es donde crea el formulario con sus tablas y demás no existe/generá ningún error.

¿Se os ocurre algo?
Responder Con Cita
  #2  
Antiguo 25-04-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Tienes definido código en los eventos Create o Show del formulario auxiliar?
Si lo tienes ¿Qué codigo tienes colocado?

En principio el trozo de código que colocas es correcto, así sólo con eso no debería fallar.

¿Tienes algun componente no estandard en ese formulario? (que te pueda provocar ese error). Prueba a eliminar código y componentes a ver si te sigue dando.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 25-04-2005
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 21
jzk Va por buen camino
Voy a hacer las comprobaciones que me indicas y luego te cuento, porque tengo lineas de código en el Create del formulario lo que ocurre es que como realiza todos los pasos que hay en ese evento correctamente creía que el problemas derivaba del Showmodal que es donde me mete el petardazo.
Responder Con Cita
  #4  
Antiguo 25-04-2005
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 21
jzk Va por buen camino
He comentado todas las lineas de programación incluidas en los eventos;

OnCreate, OnClose y OnCloseQuery

Y sin embargo el problemas persiste y no utilizo ningún objeto que no sea standard.

¿se os ocurre algo?, gracias.
Responder Con Cita
  #5  
Antiguo 25-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código:
		Try
			 Application.CreateForm(TForm3histor,Faux);
			 Faux.ShowModal;
		Finally
			 Faux.Free;
			 Faux := nil;
		End;
Yo intentaría esto.

Si te da error, entonces probaría esto otro:
Código:
         Faux := TForm3historic.Create(nil);
		Try
			 Faux.ShowModal;
		Finally
			 Faux.Free;
			 Faux := nil;
		End;
Si te furula bien alguna de las formas, ya explicaré la diferencia

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 25-04-2005
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 21
jzk Va por buen camino
No me ha funcionado pero te agradecería que me explicases el por qué, ah y darte las gracias.
Responder Con Cita
  #7  
Antiguo 25-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Quién es FAux? Es decir, ¿dónde está declarado?

No sé a qué diferencia se refiere Lepe ya que hay dos diferencias. La sustancial, desde mi punto de vista, es sacar la creación del formulario del bloque try-except. Si hubiera alguna excepción al momento de crear el formulario, se estaría intentando liberar un objeto que nunca terminó de construirse totalmente.

// Saludos
Responder Con Cita
  #8  
Antiguo 26-04-2005
Avatar de jzk
jzk jzk is offline
Miembro
 
Registrado: may 2004
Posts: 100
Poder: 21
jzk Va por buen camino
Faux, es una variable declarada de la siguiente manera:

Código:
 procedure Programa1.SpeedButton1Click(Sender: TObject);
var Faux: TForm3histor;
begin
   Try
      Application.CreateForm(TForm3histor,Faux);
      Faux.ShowModal;
   Finally
      Faux.Free;
   End;End
Responder Con Cita
  #9  
Antiguo 26-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
La explicación ya la dió roman, además como no sabía donde estaba declarada la variable Faux, lo que hago es asignarle nil despues de liberarla.

jzk
creo que hay "algo más" que no nos cuentas, quizás porque has creido que no tiene importancia. La verdad, todos los códigos propuestos funcionan a la perfección.

La ventana es de tipo mdiChild?

Hay más código en el SpeedButton ??

Dentro de la ventana Faux, llamas a algún evento, propiedad o método de la ventana Programa 1 ??

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:35:23.


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
Copyright 1996-2007 Club Delphi