Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2011
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Out of Memory al hacer FreAndNil

Hola:
tengo este problema... no me ocurrio nunca hasta que puse en el form para visualizar fotos. Las cuales las cargo en un Timage, con el LoadFromFile().
Resulta que habro el formulario de ABM Articulos y al cerrar destruyo su DataModule Asociado. y ahora cuando ejecuta el FreeandNil(DatosStock), previamente haber cerrado los Dataset y querys, salta el error. Y no se como capturar el error. La misma operacion de destruir los DM lo hago en todos los form sin problema. Alguna Sugerencia???

Luis Roldan
Mar del Plata
Argentina
Responder Con Cita
  #2  
Antiguo 01-08-2011
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Agrego: ahora sacando lo que habia puesto de las imagenes , tambien me da el error la verdad no se si destruyo algo por que me da error de memoria
Responder Con Cita
  #3  
Antiguo 01-08-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para liberar la memoria de un TImage hay que hacer:

Código Delphi [-]
var
   Imagen: TImage;
begin
   //Cargar Imagen
   Imagen.Picture.LoadFromFile('C:\Imagen.bmp');

   // Liberar memoria utilizada por TImage
   Imagen.Picture.Free;
end;
Responder Con Cita
  #4  
Antiguo 01-08-2011
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Gracias, por la respuesta , hace falta hacer si cargo una imagen despues de otra? es decir hice una tabla con los path de las imagenes, y cuando seleciono un reg nuevo levanto el path y hago el loadimage(), o se va pisando dentro del Image una con otra?..
de todos modos el problema se resolvio. Pienso que es por esto. para no tener que ir a la paleta de comp. aveces copio y pego los que tengo dentro del DM y los asgino a su nuevo query y todo eso. bueno Borre el CDS, DSP y los puse de nuevo desde la paleta y no dio mas el error. hace el freeandnil del datamodule sin problema...... no se si hay una explicacion......



Luis Roldan

gracias por leerme
Responder Con Cita
  #5  
Antiguo 05-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
cuando seleciono un reg nuevo levanto el path y hago el loadimage(), o se va pisando dentro del Image una con otra?
Hola Luis.

Eso depende de como realices la creación.

Por ejemplo, de este modo se crea una instancia de TImage, se van cargando las imágenes sobre la mísma y por último se libera:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TImage.Create(nil) do
  try
    Stretch:= True;
    Parent:= Self;
    Picture.LoadFromFile('Imagen1.jpg');
    Application.ProcessMessages;
    Sleep(1000);
    Picture.LoadFromFile('Imagen2.jpg');
    Application.ProcessMessages;
    Sleep(1000);
    Picture.LoadFromFile('Imagen3.jpg');
    Application.ProcessMessages;
    Sleep(1000);
  finally
    Free;
  end;
end;
Si pones un componente TImage en tiempo de diseño se comporta de forma similar.

Pero de este, se crea y libera una instancia de TImage por cada imágen:
Código Delphi [-]
procedure CargarImagen(Frm: TForm; Nombre: string);
begin
  with TImage.Create(nil) do
  try
   Stretch:= True;
   Parent:= Frm;
   Picture.LoadFromFile(Nombre);
   Application.ProcessMessages;
   Sleep(1000);
  finally
   Free
  end
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  CargarImagen(Form1,'Imagen1.jpg');
  CargarImagen(Form1,'Imagen2.jpg');
  CargarImagen(Form1,'Imagen3.jpg');
end;


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 05-08-2011 a las 20:19:37.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Out of memory Firewind Lazarus, FreePascal, Kylix, etc. 3 20-07-2010 12:33:32
Out of memory blaiselaborde Varios 10 26-01-2010 18:52:27
Out of Memory luxus OOP 5 30-09-2008 23:11:54
error.. out of memory... CarlosHernandez Firebird e Interbase 12 07-03-2007 14:03:22
insificient memory fabriciof Conexión con bases de datos 1 26-04-2004 20:03:29


La franja horaria es GMT +2. Ahora son las 15:37:31.


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