Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por seoane
Pensaste en la posibilidad de utilizar un TObjectList.
Basicamente es lo mismo, simplemente que si hay posibilidad de ordenar la lista (utilizando un string), prefiero usar TStringList con ordenación para agilizar las búsquedas.
En este caso parece que la propiedad Name del componente es ideal para eso.
No lo he mirado, pero supongo que la búsqueda en lo TObjectList debe ser secuencial.
__________________
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.
Responder Con Cita
  #2  
Antiguo 02-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Me he perdido un rato de conversación....
Yo también insisto (pesado que es uno...).
Si se van a destruir todos los objetos a la vez, da igual utilizar TObjectList que TStringList, pero si se van buscando de uno en uno para volver a crearlos, crea que es más eficiente TStringList.

NOTA: También hay que ver de cuantos objetos estamos hablando. Si son 5 (por decir algo) es prácticamente lo mismo. Incluso las inserciones serán más lentas en TStringList, pero si en un número un poco grande se gana mucho en los accesos.
__________________
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.
Responder Con Cita
  #3  
Antiguo 02-03-2007
david.rguez david.rguez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Zamora, la bien cercada
Posts: 104
Poder: 21
david.rguez Va por buen camino
¿Qué ventajas tiene? En este caso en concreto solo necesitamos la lista para mantener una referencia para luego poder "cargarnos" las imágenes y evitar así que se dupliquen en una operación posterior.
Responder Con Cita
  #4  
Antiguo 02-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Muy buen apunte seoane pero para localizar un Objeto en el TObjectList podríamos usar el
Código Delphi [-]
function IndexOf(AObject: TObject): Integer;
que trae el TObjectList y en ese caso ¿no seria igual de efectivo buscar un objecto en un TObjectList que en un TStringList?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 02-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por jhonny
¿no seria igual de efectivo buscar un objecto en un TObjectList que en un TStringList?
Son cosas diferentes, en el caso del TStringList lo localizamos por el nombre (o por cualquier otra cadena de texto que le asignemos), mientras que con el método que tu indicas no se puede.
Responder Con Cita
  #6  
Antiguo 02-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Se que como parámetro hay que pasarle un Objeto y al de el TStringList un string pero lo que trato de preguntar es ¿Que tan rápido(Eficiente) es buscar la posición de un objeto con este método? ¿Es igual de rápido que buscar el nombre de un objeto en un TStringList?

Pregunto esto porque si la respuesta es positiva, me parecería que en ultimas el TStrinList no terminaria siendo la mejor opción para ninguno de los dos casos.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 02-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Pongamos un ejemplo jhonny. Si yo tengo una lista de objetos, y quiero acceder a un objeto sabiendo solo su nombre, no podría usando el método que tu indicas.
Responder Con Cita
  #8  
Antiguo 02-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jhonny
Se que como parámetro hay que pasarle un Objeto y al de el TStringList un string pero lo que trato de preguntar es ¿Que tan rápido(Eficiente) es buscar la posición de un objeto con este método? ¿Es igual de rápido que buscar el nombre de un objeto en un TStringList?
La diferencias es el método de Acceso.
NOTA: Habñlamos siempre de TStringList que podamos Ordenar y sin duplicados (opara poder usar el método Find con búsqueda binaria).

En el TObjectList cuando buscas con (IndexOf), se hace un recorrido desde el primer objeto mirando si es el que buscas. Si no ese ese, incrementa el índice y vuelve a comparar; Así hasta encontrarlo o llegar al final de la lista.

En TStringList (ordenado y sin duplicados) al hacer un Find se coge el elemento central de la lista y se compara. Si es igual, se compara si es mayor o menor y se busca en la mitad de la lista correspondiente empezando por el elemento central y así sucesivamente.

En media en un TObjectList harás un número de comparaciones para buscar un elemento igual a la mitad de los elementos;
En una lista de 10 harás 5 comparacoiones, en una de 100 harás 50...
10 -> 5
100 -> 50
1000 ->500
10000 - 5000
...

En media en una búsqueda binaria (la que hace TStringList) debes aplicar logaritmo.
10 -> 4
100 -> 7
1000 -> 10
10000 -> 13
....

Si te fijas la proporción se aleja cuantos más elementos hay.
__________________
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.
Responder Con Cita
  #9  
Antiguo 02-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por david.rguez
¿Qué ventajas tiene? En este caso en concreto solo necesitamos la lista para mantener una referencia para luego poder "cargarnos" las imágenes y evitar así que se dupliquen en una operación posterior.
Como he dicho arriba, si vas a recorrer la lista secuencialmente para borrarlas todas juntas, mejor TObjectsList. TStringList tiene ventajas si vas a hacer búsquedas individuales.
EDITO: Veo que es lo mismo que te ha dicho Seoane.
__________________
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.
Responder Con Cita
  #10  
Antiguo 02-03-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Cita:
Empezado por david.rguez
¿Qué ventajas tiene? En este caso en concreto solo necesitamos la lista para mantener una referencia para luego poder "cargarnos" las imágenes y evitar así que se dupliquen en una operación posterior.
Voy a intentar ordenarte un poco las cosas.

Si lo que necesitas es lo que planteaste al principio, con el codigo que te di es suficiente.

Ventajas de TStringGrid, en el caso tuyo es mas facil buscar un componente segun el nombre de la imagen que posee.

Ventaja del TObjectList, por ejemplo queres que al hacer doble click sobre la imagen este elimine o que se agrande en otra ventana. Tenes funciones mas rapidas como Remove(AObject: TObject) y IndexOf(AObject: TObject) que vienen de 10 en estos casos.

Si no te interesa tanto esto. Dejalo como esta.

pd: No quiere decir que con el Tlist no se pueda hacer busqueda, tambien se puede, es la clase base de las otras clases, por lo que las otras agregan algunas funcionalidades extras.

Cita:
Empezado por seoane
Aja!!!
para que veas que no soy cerrado , creo que todos los codigos se pueden mejorar un poco
__________________
[Crandel]
Responder Con Cita
  #11  
Antiguo 02-03-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
che locos, dejen de hablar todos al mismo tiempo que no se entiende nada. A ver si sacan turno para escribir
__________________
[Crandel]
Responder Con Cita
  #12  
Antiguo 02-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por seoane
Pongamos un ejemplo jhonny. Si yo tengo una lista de objetos, y quiero acceder a un objeto sabiendo solo su nombre, no podría usando el método que tu indicas.

mmm, si tienes razón en fin todo depende de para que se necesite, quizá mi cerebro se niega a creer que no venga de fabrica un método en esta clase para buscar el objeto por su nombre.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #13  
Antiguo 02-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.070
Poder: 32
jhonny Va camino a la famajhonny Va camino a la fama
Muchas gracias por la extensa explicación Neftali, todo esta mas claro que el agua.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #14  
Antiguo 02-03-2007
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
En mi experiencia, a pesar del entusiasmo inicial que alguna vez tuve por el ObjectList, en general es una clase con muy pocas ventajas sobre el StringList, ya que la más de las veces requerimos referenciar a los objetos que contiene por algún identificador. La ventaja de un ObjectList, que sería la de su manejo automático de la destrucción de los ojetos, es realmente muy nimia. Una simple rutinita:

Código Delphi [-]
procedure FreeList(var List: TStringList);
var
  I: Integer;

begin
  for I := 0 to List.Count -1 do
    List[i].Free;

  FreeAndNil(List);
end;

Vamos, qué es más cómodo con ObjectList, lo es. Pero muy poco más cómodo, y la enrome ventaja de acceder a los elementos por medio de un identificador sobrepasa con creces lo otro.

// Saludos
Responder Con Cita
  #15  
Antiguo 02-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por Neftali
No lo he mirado, pero supongo que la búsqueda en lo TObjectList debe ser secuencial.
Efectivamente, la única forma de localizar un objeto dentro de un TObjectList es recorrer la lista. Pero si te fijas, el no menciona como piensa acceder a los objetos, puede que incluso lo haga de forma secuencial. En lo que si hace hincapié es que le gustaría poder liberar todos los objetos a la vez, y ahí si que el TObjectList es perfecto.

Cuando añadimos un objeto a un TObjectList este se convierte en el dueño del objeto, esto implica, entre otras cosas, que cuando haces Free o FreeAndNil sobre el TObjectList automáticamente se liberan todos los objetos de la lista.

En conclusión, si se necesita hacer búsquedas por nombre, el TStringList es lo mejor, si por el contrario lo que nos interesa es que liberar los objetos sea un proceso transparente para nosotros entonces un TObjectList es una buena opción.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Crear y destruir formas dinamicamente ing_gera C++ Builder 1 16-02-2007 00:45:23
destruir Aplicacion jubers85 Varios 2 10-02-2006 09:27:40
Como destruir o liberar una forma maguib Varios 1 11-03-2005 19:39:02
Destruir un TIBQuery furniman Varios 1 25-03-2004 12:20:14
No puedo destruir ventana Marina Varios 2 02-12-2003 13:43:58


La franja horaria es GMT +2. Ahora son las 16:14:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi