FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Array of TImage
Hola, qué hay?
En el momento de eliminar completamente las imágenes de un Array of TImage (dinámico) insertadas en un ScrollBox, ¿es suficiente con eliminar dicho ScrollBox o es conveniente eliminar cada imagen individualmente (For i:= High(fotos) DownTo Low(fotos) Do fotos[i].Free)? Es que he hecho las dos versiones y no sé con cual quedarme |
#2
|
||||
|
||||
Al liberar un array normal no se liberan las cosas a las que apunta... por lo tanto entiendo que deberías liberar cada imagen.
Para comprobarlo puedes hacer un bucle que carge y elimine el ScrollBox sin la parte de la liberación de memoria de los TImage asociados y vas mirando cuanta memoria consume windows. Si sube, ya sabes la respuesta. |
#3
|
|||
|
|||
Lo malo es que un ordenador con 16 GB de RAM ni se iba a enterar ... y encima las imágenes cargadas son en realidad miniaturas no se nota aunque cargues cientos... y en este caso es significativamente lento eliminarlas una a una.
|
#4
|
||||
|
||||
En teoría no se libera la memoria de las imágenes, ya que estas han sido creadas antes, y asignada después al scrollbox.
Yo las eliminaría, no puede ser lento como dices, debe ser algo instantáneo. Y lo de que tiene 16 Gb no puede ser ninguna excusa
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 16-01-2023 a las 19:44:15. |
#5
|
|||
|
|||
Lento sí que es, tarda sus buenos cinco segundos en deshacerse de unos pocos cientos de miniaturas... claro que solo va a un tercio de la velocidad del microprocesador, lógicamente... En cuanto pueda, hago las pruebas que me sugiere Duilioisola en una máquina virtual...
|
#6
|
||||
|
||||
También puedes cargar imágenes grandes en formato BMP a todo color.
Con el Paint crea un cuadrado blanco de 1000x1000 y guárdalo en formato BMP de 24 bits. La imagen pesará 2.86MB. En la carga de miniaturas fuérzalo a cargar esta imagen. |
#7
|
||||
|
||||
Cita:
¿Por qué tienes que hacer las pruebas en una máquina virtual?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
¡Hola, Wellnic!
Como alternativa al Array, puedes hacer uso de la clase TOBjectList<T> Cita:
__________________
Buena caza y buen remar... http://mivaler.blogspot.com Última edición por movorack fecha: 17-01-2023 a las 14:52:27. |
#9
|
|||
|
|||
Cita:
Y las creo así: Nada del otro jueves Como ves, además de las fotos, creo TEdit asociados, que muestran un ID para cada foto. ¿Serán los que ralentizan el borrado? (Lo curioso es que, cuando se crean muchos de esos elementos, los Tedit centrales y finales no suelen aparecer...) Si quieres pongo el procedimiento completo, pero no creo que te fuera a aclarar mucho más... |
#10
|
|||
|
|||
Cita:
|
#11
|
||||
|
||||
Cita:
Otra opción podría ser crear un thread sencillo que realizara la liberación y así el programa podría continuar (habría que ver en qué momento se libera).
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#12
|
|||
|
|||
Sí... se ve como la barra de desplazamiento vertical se va moviendo y distendiendo en orden inverso, hasta que todas las imágenes desaparecen. Así que se me ocurrió ocultar el ScrollBox y mostrar la interfaz principal (un Memo ) antes del proceso de borrado y (al parecer) asunto arreglado
|
#13
|
||||
|
||||
En esos casos se puede mirar si se puede "desactivar" el refresco visual. Dependiendo de los componentes poseen un EnebleControls/Disablecontrols o BeginUpdate/EndUpdate o algo similar. Porque seguramente la mayor parte del tiempo se está "gastando" en el refresco de la parte visual, no en la propia destrucción de las imágenes.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Girar un Timage con respecto a otro Timage | Tuvan | Gráficos | 1 | 05-11-2016 22:30:50 |
Problema para hacer un array a un TImage! | Manuzinho | OOP | 5 | 06-02-2011 00:51:19 |
Mostrar cada imagen de un Array of TImage. | rauros | Gráficos | 1 | 04-09-2008 18:38:55 |
como Hacer que un TImage siga a un Timage? | j_flores3000 | OOP | 8 | 27-03-2008 19:47:50 |
como combinar 2 Timage en un tercer Timage | JefeNet | Gráficos | 10 | 02-09-2004 17:51:35 |
|