Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2005
Essato Essato is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
Essato Va por buen camino
Question formStyle=fsMDIForm, formStyle=fsMDIChild == "Abstract Error"

Hi!, bien, estoy haciendo un programa que corra en subventanas, tengo la ventana "padre" con el formstyle a fsMDIForm, y las hijas con fsMDIChild, en el proyecto las movi del "formcreate" automático, las creo en momento de ejecución ( Application.CreateForm(Tnombreventana, nombreventana); ), se supone que es así por ahorro de recursos, abro las ventanas y pongo una bandera (variable) a verdadero, esto para no lanzar la ventana dos veces, cuando se cierra la ventana pongo la vandera a falso y destruyo la ventana (nombreventana.destroy; ). Aquí es cuando sale el problema, cuando cierro la ventana me dan 2 errores, uno, el más común "Abastrac Error" y otro error de acceso a memoria. Claro, estos errores se dan uno u otro, no simultáneos. Cuando abro y cierro la ventana varias veces deja de dar error.

¿Alguien sabe porque pasa esto? y sobre todo, ¿como puedo repararlo?.

De antemano, Gracias!.
Responder Con Cita
  #2  
Antiguo 15-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
El problema es que estás usando nombreventana.Destroy para destruir las ventanas. Si lees la ayuda de Delphi, ahí dice que para liberar un objeto de memoria se use el método Free y no Destroy.


Saludos...
Responder Con Cita
  #3  
Antiguo 15-06-2005
Essato Essato is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
Essato Va por buen camino
hi, gracias por tu ayuda.

Ya probe con el FREE y me dan los mismos errores :|
Sabes otra posible causa?, este proyecto lo comenze en delphi9 e igual tenia ese error, ahora lo estoy trabajando en delphi7.
Responder Con Cita
  #4  
Antiguo 15-06-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Cita:
Empezado por Essato
hi, gracias por tu ayuda.

Ya probe con el FREE y me dan los mismos errores :|
Sabes otra posible causa?, este proyecto lo comenze en delphi9 e igual tenia ese error, ahora lo estoy trabajando en delphi7.
Aún así, siempre que quieras liberar un objeto que tu creaste, usa el método Free.

Sobre tus errores, delphi.com.ar ya comentó algo sobre los "Abstract Error". Sobre los errores de acceso a memoria, verifica que no se esté tratando de usar o liberar un objeto que, o no se ha creado o ya fue liberado.


Saludos...
Responder Con Cita
  #5  
Antiguo 15-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Hace bastante tiempo me volvían locos esos errores, simplemente haz esto:

Código Delphi [-]
procedure Tform1.FormClose(....);
begin
  action := cafree;
  nombreVentana := nil;
end;

Las ventanas sigue creandolas como lo haces ahora.

Las llamadas a Destroy no debes hacerlas; es más ahora no te hacen falta, simplemente llama al método NombreVentana.Close o bien, si quieres acceder desde la forma MDI: FormaMdi.MdiChildren[i].Close

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 15-06-2005
Essato Essato is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
Essato Va por buen camino
hi, probe con lo de:

action:=catfree
nombreventana:=nil

me da un error, que son incompatibles los tipos, con lo de formamdi.mdichildren[] probe con cero y uno, ahora sólo marca error de memoria.

Gracias!.
Responder Con Cita
  #7  
Antiguo 15-06-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Los "Abstract Error" se producen cuando se llama a un método abstracto que no ha sido implementado, si tus forms heredan de TForm y no has definido métodos abstractos, yo buscaría el problema por los componentes que has agregado a este form, o clases que tu te encargues de liberar "a mano".

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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 01:50:19.


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