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 29-02-2008
byfali byfali is offline
Miembro
 
Registrado: mar 2007
Posts: 24
Poder: 0
byfali Va por buen camino
StringGrid rellenar rapidamente.

Hola amigos. Estoy haciendo un programita que me muestra en un StringGrid el contenido de un archivo en modo Hexadecimal.
Todo va bien, el problema es que si el archivo es grande tarda un tiempo considerable ya que se va rellenado sobre la marcha.
Hay algun modo de cargar los datos y despues volcarlos en el StringGrid igual que se vuelcan los datos de un TStringList en un ListBox.?

Tambien me valdria para volcar los datos en un ListView.
Gracias.
Responder Con Cita
  #2  
Antiguo 29-02-2008
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Es que usar un stringgrid para lo que pretendes no es la solucion correcta, no escala bien, si el archivo es grande seria inusable.

Una solucion mas adecuada es usar un TDrawGrid y en el evento OnDrawCell pintar directamente el valor correspondiente leyendolo del archivo, con esto funcionara para cualquier tamaño de archivo sea de 1K o de 1GB de tamaño. La cache del propio sistema operativo y los buffers de las funciones de lectura de archivos ya se encargaran de evitar que se este leyendo continuamente del disco duro.

Saludos
Responder Con Cita
  #3  
Antiguo 29-02-2008
byfali byfali is offline
Miembro
 
Registrado: mar 2007
Posts: 24
Poder: 0
byfali Va por buen camino
Gracias Mick lo prabare haber que tal.
Responder Con Cita
  #4  
Antiguo 29-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
No estoy muy seguro de qué tanto beneficia usar un DrawGrid. De entrada, el StringGrid también tiene el evento OnDrawCell, pero los datos de cualquier manera se tienen que vaciar sobre el componente. Posiblemente hay algo que no termino de ver, pero veo más conveniente usar un componente como el TListView, o mejor, el TVirtualTreeView, que funcionan en modo virtual. Esto significa que el componente no debe tener todos los datos al mismo tiempo, sino que éstos pueden mantenerse en otra estructura más eficiente (incluso, quizá, el propio disco) y se proporcionan al componente conforme se van requiriendo.

Bye
Responder Con Cita
  #5  
Antiguo 29-02-2008
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Cita:
Empezado por keyboy Ver Mensaje
No estoy muy seguro de qué tanto beneficia usar un DrawGrid. De entrada, el StringGrid también tiene el evento OnDrawCell, pero los datos de cualquier manera se tienen que vaciar sobre el componente. Posiblemente hay algo que no termino de ver, pero veo más conveniente usar un componente como el TListView, o mejor, el TVirtualTreeView, que funcionan en modo virtual. Esto significa que el componente no debe tener todos los datos al mismo tiempo, sino que éstos pueden mantenerse en otra estructura más eficiente (incluso, quizá, el propio disco) y se proporcionan al componente conforme se van requiriendo.

Bye
Ahi esta la clave, lo que no terminas de ver es que "los datos no se tienen que vaciar sobre el componente" un TDrawGrid solo facilita el dibujado en pantalla de un grid pero no hay ningun dato que traspasar al tdrawgrid, exceptuando el indicarle el numero de filas y columnas. Cada vez que el drawgrid te pida dibujar la Celda con coordenadas X,Y simplemente el programa debe leer el dato correspondiente a esas coordenadas del archivo en disco y dibujar ese dato directamente en pantalla.
Es decir un TDrawGrid es como el TVirtualTreeView que comentas.

Da igual de este modo que el archivo ocupe mucho o poco el consumo de memoria ram y la sobrecarga por cargar todos los datos en memoria al principio es CERO porque no se hace.

Saludos

Última edición por Mick fecha: 29-02-2008 a las 17:51:39.
Responder Con Cita
  #6  
Antiguo 29-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
¡Ah! Ok. Gracias por la aclaración. La verdad es que desconocía el uso del DrawGrid y di por sentado algo incorrecto.

Bye
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
Rellenar con ceros (0) egarc SQL 5 08-10-2012 08:42:21
Rellenar con 0.... buitrago Varios 6 17-11-2011 20:02:53
Buscar componentes en el IDE rapidamente Jose Roman OOP 7 24-01-2008 11:23:06
ABM Rapidamente loxod Varios 12 10-05-2007 19:08:32
Rellenar una plantilla en PDF jcmolero Impresión 3 26-09-2005 09:30:28


La franja horaria es GMT +2. Ahora son las 17:56:39.


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