Ver Mensaje Individual
  #2  
Antiguo 31-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 23
guillotmarc Va por buen camino
Hola.

Mira este truco de Marteens.

http://www.marteens.com/trick42.htm

Si liberas correctamente los TQuery y aún así no recuperas la memória, probablemente es el mismo Windows el que no es capaz de recuperarla. Esta llamada al API fuerza a la recuperación de la memória liberada.

Programa un llamada a la función tras liberar los TQuery.

El tamaño de la Base de Datos y que no esté indexada es un problema de que te va a consumir más memória y tardar mucho más en ejecutarse la consulta en el proceso del servidor de Interbase. Pero no tiene nada que ver con la memória que consuma tu programa Delphi.

En principio un TQuery que hayas creado en tiempo de diseño, no hay que liberarlo con un .Free, puesto que cuando liberes el formulario al que pertenece (con un .Release) se ejecutará un .Free sobre todos sus componentes que liberará la memória asignada al TQuery.

Otra cosa es un TQuery que hayas creado en tiempo de ejecución (es decir por código), en cuyo caso o lo liberas manualmente con un .Free, o le asignas su propiedad Owner al formulario para que se ocupe el formulario de liberarlo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita