![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Delphi 10.2 metodo Release obsoleto.
Cuando cierro un formulario secundario, hasta ahora siempre utilizaba el metodo Release para liberar la memoria:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2.Release; end; Pero en delphi 10.2 este método es declarado como obsoleto, he intentado con el método Free pero no obtengo el mismo resultado, ¿alguien puede indicarme como hacerlo de una forma efectiva?. Saludos. |
#2
|
||||
|
||||
Cita:
Debería funcionar correctamente con DisposeOf según la documentación.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Pues el metodo esta definido en la clase FMX.Types.TFmxObject y segun la documentacion del mismo dice:
No encuentro ahora la referencia, pero si no me equivoco lo que hace Release era invocar a DisposeOf utilizando sincronizacion de hilos, TThread.Queue o TThread.Synchronize |
#4
|
|||
|
|||
Gracias por las respuestas, ya había probado con Disposeof, el problema es que en windows me da este error:
![]() En android simplemente cierra la aplicación, no se si es un problema de la versión de delphi. El código que utilicé en el ejempo es este: procedure TPrincipal.BotonClick(Sender: TObject); begin Form2:= TForm2.Create(nil); Form2.show; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2.DisposeOf; end; Saludos. |
#5
|
||||
|
||||
Tiene sentido, porque estas liberando de memoria el form, y luego el código continua ejecutando métodos dentro de la instancia del form, pero como la destruiste... Si tenés fuentes, revisa el código que ejecuta el evento OnClose de la clase TForm (probablemente en su superclase) o pon un Punto de ruptura y sigue la ejecución del código
Intenta colocar el valor caFree en el parámetro Action, eso liberará el form cuando lo cierres. |
#6
|
|||
|
|||
Gracias por tú interes, he probado con el valor cafree en el evento onclose, en windows parece funcionar bastante bien, libera bastante memoria, no toda, pero en android es otra historia, si bien no da ningún problema en la ejecución en el tema de la memoria es nefasto.
Seguiré investigando, no entiendo porque eliminaron el método Release. Saludos. |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tipo de Compilación (Debug/Release) y Tamaño de Exe Delphi 2010 | Neeruu | Varios | 0 | 05-09-2012 15:12:12 |
Delphi Compiler: Base, Release, Debug? | Neeruu | Varios | 1 | 12-07-2012 12:03:54 |
Twain obsoleto y D 2006 | maxvera | Gráficos | 5 | 28-09-2011 14:52:44 |
Como ipconfig /release desde delphi | voci | Internet | 3 | 18-01-2008 08:09:15 |
Migración a 10g release 2 - Problemas con la aplicación de Delphi .NET | SMTZ | .NET | 2 | 11-07-2006 09:58:20 |
![]() |
|