Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-06-2008
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Problema con Timage

BUenas amigos mi problema es el siguiente yo hago una simple asignación de una ruta de una foto en jpg, (previamente agrego la unidad jpeg) y la mando a cargar
Código Delphi [-]
image1.picture.loadfromfile(ruta+foto);
//donde ruta es : c:\archivos de programa\miprograma\imagenes/
//donde foto es: archivo.jpg

ella carga de maravilla pero en cierto momento, porque este proceso se repite de 15 a 20 veces seguido con un lapso de diferencia como de 1 seg ya que es mostrar unas fichas del personal en pantalla, en cierto momento me da una excepción

Access violation at address 42E74800. Read of address 42E74800

pero en ningún momento yo mando a liberar el objeto Timagen lo mas que llego hacer es

Código Delphi [-]
image1.picture:=nil;

para limpiar la imagen y muchas veces cuando me da la excepción de arriba tambien se repite abajo cuando mando a limpiar la imagen
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #2  
Antiguo 26-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola,

podrias poner el codigo?

saludos

PD: asignar a nil y liberar es mas o menos lo mismo.
Responder Con Cita
  #3  
Antiguo 26-06-2008
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:
Empezado por coso Ver Mensaje
asignar a nil y liberar es mas o menos lo mismo.
Pero muy mas o menos. Poner una referencia a nil por sí mismo no hace nada, no libera memoria ni destruye nada, pero cualquier uso posterior que se quiera hacer de esa referencia causará un "Access violation".

// Saludos
Responder Con Cita
  #4  
Antiguo 26-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola roman, esta es una duda al respecto...

el 'garbage collection' sirve precisamente para estos casos no? por lo tanto, asignando a nil, quieras o no estas enviando este puntero 'a la papelera...', liberando su memoria. Es una duda, no una afirmacion.

saludos y gracias por la respuesta
Responder Con Cita
  #5  
Antiguo 26-06-2008
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
¡Ah! Pues ahora que lo mencionas, quizá, en los nuevos Delphi. Yo estaba pensando en Delphi <= 7 en donde no hay recolección de basura, así que muy posiblemente estés en lo correcto, disculpa.

// Saludos
Responder Con Cita
  #6  
Antiguo 26-06-2008
JerS JerS is offline
Miembro
 
Registrado: may 2005
Ubicación: Venezuela
Posts: 254
Poder: 19
JerS Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pero muy mas o menos. Poner una referencia a nil por sí mismo no hace nada, no libera memoria ni destruye nada, pero cualquier uso posterior que se quiera hacer de esa referencia causará un "Access violation".

// Saludos


Muchas gracias amigos , entonces que me recomiendan para limpiar mi Timagen?
__________________
La vida es un simple pero complejo If

J=rS
Responder Con Cita
  #7  
Antiguo 26-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola otra vez,

si pones el codigo quiza te podamos ayudar mejor

PD: para limpiar la imagen, personalmente dibujo un rectangulo negro o bien dibujaria la siguiente encima
PDD: pues no, segun wikipedia, delphi no usa el garbage collector. Asi pues, ni con el mas o menos: asignar a nil te deja espacio en memoria reservado, bloqueado e inaccesible.

saludos

Última edición por coso fecha: 26-06-2008 a las 18:06:38.
Responder Con Cita
  #8  
Antiguo 26-06-2008
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
Perdón, la verdad es que nada más estoy confundiéndolos. Y lo voy a hacer un poco más

En Delphi <=7 (el resto no sé), poner una referencia a nil, como digo, no libera memoria. Pero, en el caso de una propiedad como image1.picture, normalmente sí se liberará la memoria porque la asignación

Código Delphi [-]
image1.picture := nil;

se traduce en

Código Delphi [-]
image1.SetPicture(nil);

y muy probablemente el método SetPicture sí se encargue de liberar la memoria.

De todas formas, sigue siendo cierto que si posteriormente se intenta usar image1.picture se obtendrá el error mencionado. Así que, como dice coso, lo mejor es que muestres más código para saber qué pasa.

// Saludos
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
problema al pintar en un TImage miguel_e Varios 1 17-05-2008 01:11:23
Problema con un TImage vivamotos C++ Builder 5 24-04-2008 16:45:32
Problema con TImageList y Timage Archangel Gráficos 1 07-11-2007 23:53:32
Problema con tImage en QReport! paulodb Impresión 2 08-12-2006 16:14:21
Problema con un TImage Jan_polero Gráficos 1 29-11-2004 23:15:11


La franja horaria es GMT +2. Ahora son las 09:29:24.


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