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 28-11-2013
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 18
david_uh Va por buen camino
quedo claro señores

gracias por sus aportes realmente no sabia que TStrings era una clase abstracta y mas con el error que me marcaba no me daba mucha información. bueno creo que en delphi si te dice que es un clase abstracta pero en lazarus manda este aviso

bueno gracias por sacarme de la duda que no dejaba de incomodar

Saludos...
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #2  
Antiguo 29-11-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ciertamente. Metí la pata porque, en Delphi, el error es desde luego más claro que en Lazarus.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 29-11-2013
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: 18.289
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
Además de lo comentado, no se si te interesaría realizar esto:

Código Delphi [-]
  combobox1.items.AddStrings(items);

En lugar de esto:

Código Delphi [-]
  combobox1.items = items/

Dependiendo de dónde esté definida la variable de tipo TStrings y lo que hagas con ella, lo segundo puede provocarte errores.
__________________
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
  #4  
Antiguo 29-11-2013
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 18
david_uh Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Además de lo comentado, no se si te interesaría realizar esto:

Código Delphi [-]
  combobox1.items.AddStrings(items);

En lugar de esto:

Código Delphi [-]
  combobox1.items = items/

Dependiendo de dónde esté definida la variable de tipo TStrings y lo que hagas con ella, lo segundo puede provocarte errores.
bueno en este caso como quiero sobreescribir me conviene la primera forma, con la segunda tendria que borrar lo anterior y luego agregar, sin embargo le veo la utilidad en otras situaciones
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #5  
Antiguo 30-11-2013
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: 18.289
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_uh Ver Mensaje
bueno en este caso como quiero sobreescribir me conviene la primera forma, con la segunda tendria que borrar lo anterior y luego agregar, sin embargo le veo la utilidad en otras situaciones
No se trata sólo de sobreescribir o agregar.
Estás trabajando con objetos, así que la primera manera, lo que hace es sustituir el objeto Items del combobox, por el objeto items que tú has creado.

El apuntador a Items que hay en TComboBox lo has redirigido a Items (TStrings). El apuntador al anterior Items (el que originalmente era del combobox) lo has perdido y la consiguiente memoria también. Ahora hay que ver qué haces con la variable Items (TStrings). ¿Dónde está definida? ¿Si la destuyes o no?

Te lo comentaba por si entiendes la diferencia de ambas cosas. Si eres consciente, bien, pero si no lo eres te puede dar problemas a posteriori dependiendo de lo que hagas.
__________________
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
  #6  
Antiguo 30-11-2013
Avatar de david_uh
david_uh david_uh is offline
Miembro
 
Registrado: may 2007
Ubicación: Arequipa, Perú
Posts: 227
Poder: 18
david_uh Va por buen camino
si bien el termino sobreescribir no el adecuado aquí como bien dices estoy cambiando la referencia al puntero de items lo cual me deja algunas dudas, si digamos listbox1 tienes unos determinado items digamos 100 productos mostrando, luego mediante código le asigno una nueva referencia a un objeto TStrngs, que hay de los anteriores osea los que tenia anteriormente, esta claro que ya no existe referencia a ellos per aun están en memoria, tal vez habría que hacer un FreeAndNil antes de asignar la nueva referencia, con respecto al objeto TString creado si es controlado su ciclo de vida y al ya no ser usado es liberado con un FreeAndNil
__________________
Yo se que muchas veces te paso ESTO
Responder Con Cita
  #7  
Antiguo 03-12-2013
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
No se trata sólo de sobreescribir o agregar.
Estás trabajando con objetos, así que la primera manera, lo que hace es sustituir el objeto Items del combobox, por el objeto items que tú has creado.

El apuntador a Items que hay en TComboBox lo has redirigido a Items (TStrings). El apuntador al anterior Items (el que originalmente era del combobox) lo has perdido y la consiguiente memoria también. Ahora hay que ver qué haces con la variable Items (TStrings). ¿Dónde está definida? ¿Si la destuyes o no?

Te lo comentaba por si entiendes la diferencia de ambas cosas. Si eres consciente, bien, pero si no lo eres te puede dar problemas a posteriori dependiendo de lo que hagas.
Yo tenia entendido que al ser items una propiedad no se hace ninguna asignacion de punteros sino se implementa con el metodo assign.
Responder Con Cita
  #8  
Antiguo 04-12-2013
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: 18.289
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 Caminante Ver Mensaje
Yo tenia entendido que al ser items una propiedad no se hace ninguna asignacion de punteros sino se implementa con el metodo assign.
En realidad el método Assign está definido en su ancestro (TStrings), y tienes razón, sería la otra forma de hacer lo que hemos comentado aquí. Si miras la implementación, verás que este método al final acaba realizando un AddStrings, tal y como hemos dicho antes, no crea un nuevo objeto TStrings y lo asigna.
__________________
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
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
Consulta SQL Basica Cowky SQL 4 17-05-2011 04:31:32
Consulta basica Albano SQL 4 02-07-2005 08:24:49
pregunta basica sobre sockets Jan_polero Internet 2 23-02-2005 15:51:49
Pregunta básica. Como saber si un valor está activo o no. gluglu Varios 3 16-09-2004 18:34:53
Pregunta Básica! Update en InterBase 7.1 con D8 gluglu Conexión con bases de datos 0 16-09-2004 17:23:11


La franja horaria es GMT +2. Ahora son las 11:49:30.


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