Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2003
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 21
JODELSA Va por buen camino
Liberar Memoria

Hola a todos:

Mi problema radica en que:
tengo una aplicacion y creo los formularios al momento de mostrarlo, y lo destruyo en el evento onclose del mismo;
lo hago de la siguiente manera:

cuando ejecuto una opcion del menú que me llama el formulario "form1" hago estos:

Application.CreateForm(TForm1, Form1);
Form1.showmodal;


y en el evento 'onshow' del form1, escribo lo siguiente:
form1.free

tambien lo he hecho:
form1.destroy

me produce un mensage que dice:

project siscomp.exe raised exceptin class EaccessViolation with 'Access violation at address 00000009.White of addres 704B2CF9'. Process stopped. Use Step or Run to Continue.

siscomp es el nombre de mi projecto,
Responder Con Cita
  #2  
Antiguo 13-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si form1 lo llamas y creas desde el menú, form1.free, tendrías que colocarlo en el evento OnClose de Form1, también bastaría con escribir:
Action:=CaFree;

Un Saludo.
Responder Con Cita
  #3  
Antiguo 13-05-2003
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Thumbs up

Intenta crear la forma de la siguiente manera:

1. Si "Form1" no es tu forma principal, Debes de quitarla de las "formas autocreadas", presionando Shift-Ctrl-F11 y luego click en la pestaña "Forms", Y pasandola de "Auto-create forms" a "Available forms".

2. Para crearla agrega el nombre de la unidad de "Form1" en el Uses de la otra unidad que llamara a "Form1".

Supongo que es "Unit1".

3. Puede ser en un boton algo asi:

Código:
Form1:=TForm1.Create(self);
            Form1.ShowModal;
            Form1.Free;
4. El Form1.free no lo hagas en el evento onShow de "Form1", Debes hacerlo en el evento OnClose...

Y deberia de ser asi:
Código:
Action:=Cafree;
para devolver toda la memoria utilizada.

Espero te sirva de guia

//Caramba, mientras escribia Marcoszorrilla, ya te habia contesta
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 13-05-2003 a las 17:56:13.
Responder Con Cita
  #4  
Antiguo 13-05-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Además no es necesario referenciar la variable Form1 (si no pones ninguna referencia, se aplicará a la instancia actual del formulario). Simplemente pón : Free o Self.Free.
(Sospecho que el problema lo tienes en la variable que referencia al formulario)

NOTA: Yo prefiero utilizar el método Release en lugar de Free, aunque tengo que reconocer que desconozco las diferencias exactas entre los dos métodos. El que te desaconsejo es la utilización de Destroy.

Saludos..
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 13-05-2003
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
Cita:
Posteado originalmente por guillotmarc

NOTA: Yo prefiero utilizar el método Release en lugar de Free, aunque tengo que reconocer que desconozco las diferencias exactas entre los dos métodos. El que te desaconsejo es la utilización de Destroy.
De hecho en la ayuda de Delphi se indica que se debe usar Release cuando se destruye una forma desde alguno de sus eventos. La razón parece lógica: Para el momento en que se desea liberar la forma, es posible que aún existan mensajes en la cola de mensajes de la forma esperando ser procesados. Release se encarga de no liberar la forma sino hasta que todos los mensajes han sido procesados.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:09:30.


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