FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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
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
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
|
#2
|
|||
|
|||
hola,
podrias poner el codigo? saludos PD: asignar a nil y liberar es mas o menos lo mismo. |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
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 |
#5
|
|||
|
|||
Cita:
Muchas gracias amigos , entonces que me recomiendan para limpiar mi Timagen?
__________________
La vida es un simple pero complejo If J=rS
|
#6
|
||||
|
||||
¡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 |
#7
|
|||
|
|||
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. |
#8
|
||||
|
||||
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
se traduce en
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 |
#9
|
|||
|
|||
Cita:
BUeno en realidad el resto del codigo es irrelevante porque lo que hago es limiar unas variables que utilizo para asignar los nombres de las personas apellidos entre otros datos, pero yo voy documentando mi código en un archivo de texto(una especie de Log) y el codigo revienta exactamente en
después revienta otra vez
__________________
La vida es un simple pero complejo If J=rS
|
#11
|
|||
|
|||
en realidad la excepcion sale es esporadicamente no sale siempre... te explico yo muestro una ficha de personal en pantalla cuando una persona muestra su carnet contra un lector de codigo de barra luego que muestro los datos se minimiza el formulario.. pueda que se repita este proceso como unas 20 veces en 5 min mas o menos, y como puede que de el error hoy puede que no lo de, es algo esporadico, por eso es que me tiene vuelto loco
__________________
La vida es un simple pero complejo If J=rS
|
#12
|
|||
|
|||
Me da la impresion que lo que te pasa es que en cierto momento has destruido la asignacion de memoria del TImage, y al volver a intentar acceder a el (o a su picture) te da el error de acceso a memoria. Iria bien que pusieras el codigo completo, no solo donde te salta, pues es probable que el error lo generes antes aunque se te localize alla. Puedes probar de colocar estas lineas antes de los try, para ver si va por alla la cosa de nul asignment.
saludos. PD: lo dicho, si pones el codigo del recorrido entero, mejor que mejor. Última edición por coso fecha: 26-06-2008 a las 19:06:17. |
#13
|
|||
|
|||
Cita:
Bueno amigo coso voy a probar con esos condicionales a ver si se elimina el error
__________________
La vida es un simple pero complejo If J=rS
|
|
|
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 |
|