![]() |
¿Problema de memoria?
Hola qué tal? Gracias por felicitarme en el día de mi cumpleaños!!!
Veréis, tengo un problema bastante raro. Cuando corro mi aplicación con bases de datos Paradox y escrito en delphi 5 en un ordenador con Win98 funciona de maravilla, pero cuando estoy utilizando esta aplicación durante un cierto tiempo (más o menos un cuarto de hora) ésta "peta" y aparece un mensaje de error de Windows diciendo que se ha producido un error y el programa debe cerrarse, independientemente de lo que esté haciendo el programa. Esto puede deberse a un problema de memoria? Este ordenador tiene 128 MB de RAM!!! No creo, no? O sino qué está pasando? Agradecería una respuesta, ya que esta sería mi mejor regalo de cumpleaños jejejeje!!! Gracias anticipadas. |
hola Ciscu, en primer lugar felicitarte :P, en segundo, te has dado cuenta que has duplicado el mensaje? creo que te toca reprimenda por parte de los moderadores jeje
Bueno voy al grano. Puede ser problema de memoria, pero no por que tengas poca, sino por que a lo mejor no estas cerrando correctamente una ventana y despues la vuelves a crear, o tal vez no estas liberando bien una variable. Por que no detallas un poco más el proceso de tu aplicación? Salu2 |
Cita:
Cita:
Revisa el código que tengas donde hayas colocado Free o los eventos OnClose que puedas haber programado como ya te han dicho. |
Hola a todos!!!
Bueno, ante todo el ordenador es Celeron (sin procesador matemático) con Win98 SE; puede afectar esto en algo? El problema que me aparece es el típico de Windows, es decir, "El programa ha efectuado una operación no válida y debe cerrarse". Cuando ejecuto mi programa, en la memoria se carga el formulario principal con menús y 3 datamodules llenos de las tablas paradox (TTable) y consultas (TQuery). Entonces, cuando quiero, por ejemplo, facturar, voy a este menú y se carga en memoria este formulario, y cuando salgo lo libero mediante Código:
Formx.Release Código:
Formx.ShowModal Podéis seguir ayudándome? Gracias de antemano |
Revisa que creas y liberas correctamente las ventanas según este hilo
|
yo particularmente los hago del siguiente modo
El FreeAndNil si no recuerdo mal creo que se implemento a partir de la version 5 de Delphi, que es lo equivalente a quitar le puntero y hacer un Free |
Mi metodo es el siguiente:
Código:
with TForm_Pantalla.Create(self) do begin |
Cita:
Y supongo que la variable que crea Delphi en la unidad de la ventana la eliminarás, ya que no la usas, es un puntero, no ocupa mucho espacio en memoria mientras que no la instancies, pero si tienes muchas ventanas, se van sumando los 4 bytes de cada puntero. El método de chicolita lo veo muy correcto. Saludos |
Pues con permiso del personal, yo añadiré un try...except al código propuesto :D
Es que me gusta ver el tipo de excepción lebantada en una pantallita controlada po mi, manias de uno, ya véis :rolleyes: :D |
Si efectivamente Lepe, esta variable
Código:
var Form_Pantalla: TForm_Pantalla; Yo tambien utilizaba el metodo de chicolita, pero digamos que tuve una mala experiencia por problemas de memoria en un proyecto, y me asesoraron que ese metodo no era muy correcto ¿?¿? así que utilizo este otro y así siempre me aseguro que no dejo la Form alojada en memoria una vez cerrada. |
La franja horaria es GMT +2. Ahora son las 07:06:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi