Delphi - Access violation al cerrar aplicación

 
Vista:

Access violation al cerrar aplicación

Publicado por Victoria (5 intervenciones) el 23/08/2004 11:05:05
Hola,
estoy haciendo una aplicación en delphi, que lee y escribe ficheros y tiene varias forms. En el evento FormDestroy, tengo el código que cierra todas las forms y los ficheros. He comprobado que este código se ejecuta completo. Sin embargo, después da un error de Access Violation. No sé dónde se produce este error y cómo capturarlo.
¿Alguien puede echarme una mano?

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Access violation al cerrar aplicación

Publicado por miguel (3 intervenciones) el 23/08/2004 11:45:34
los form no se debe abrir ni cerrar se debe de crear con try creo que lo habra hecho asi entonces el form no lo puedes destruir pues ya esta hecho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Access violation al cerrar aplicación

Publicado por Victoria (5 intervenciones) el 23/08/2004 16:04:39
Hola,
Gracias por tu respuesta.
En mi aplicación solo la form principal se crea al principio. Las demás se crean en el momento en que hacen falta con
if (Form2 = nil) then Application.CreateForm(TForm2, Form2);
En el FormDestroy, la primera acción es revisar las forms creadas y eliminarlas de esta forma:
if (Form2 <> nil) then begin
Form2.close();
Form2:=nil;
end;
El proceso que hay en el FormDestroy continua despues de esto sin problemas haciendo el resto de tareas.

Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Access violation al cerrar aplicación

Publicado por BigLuis (713 intervenciones) el 23/08/2004 17:11:59
Crea los objetos tarde y destruyelos cuanto antes (Lin Chu).Es broma (lo de Linchu).No deberias tener que hacer la comprobacion de if(Form2<>nil) ya que deberías destruir el formulñario tan pronto como dejas de usarlo.No lo tengas guardado por si lo necesitas mas tarde, crealo y destruyelo tantas veces como sea necesario. En cuanto a las instrucciones
if (Form2 <> nil) then begin
Form2.close();
Form2:=nil;
creo que te falta antes del Form2:=nil esta Form2.Free; ya que la instruccion que iguala el formulacio a nil es para liberar la memoria que deja el formulario tras la instruccion free que lo destruye. Compruebalo a ver si cesan los errores.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Access violation al cerrar aplicación

Publicado por Victoria (5 intervenciones) el 24/08/2004 17:35:01
Hola,
he usado el Form2.Free y sigue dando el error. El error da al cerrar la aplicación aunque no se haya abierto ningún otro form.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Access violation al cerrar aplicación

Publicado por Elena (330 intervenciones) el 23/08/2004 17:17:13
Ok, debes asegurarte que el FormStyle del principal sea MDIForm y del secundario (Form2) sea MDIChild, luego en el menú Project-Options, mueve el Form2 a la columna de la derecha (Available Forms) y utiliza el código que tienes para abrirla...
if (Form2 = nil) then Application.CreateForm(TForm2, Form2);
Y el mismo para cerrarla.
if (Form2 <> nil) then begin
Form2.close();
Form2:=nil;

Aunque también en el OnClose del Form2 puedes poner
Action := CaFree;

Para que quede centralizada, utiliza el Position del Form2 = MainFormCenter y en el OnActive del Form2 pones Top := 10; (o el # que prefieras)

Espero que te sirva de algo mi ayuda, cualquier cosa no dudes en contactarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Access violation al cerrar aplicación

Publicado por Victoria (5 intervenciones) el 24/08/2004 17:36:34
Hola,
he probado de varias formas pero siempre da el error al cerrar.

Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar