Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.
Cita:
Empezado por aguml Ver Mensaje
en tu codigo veo cosas que no entiendo. Por ejemplo, creas un puntero de tipo TStrings y luego le asignas un TStringList..
La explicación es polimorfismo.


Cita:
Empezado por aguml Ver Mensaje
¿Por que no creas un simple AnsiString y luego haces un Add con el TStringList?
Quise ponerte un ejemplo mas completo para mostrar el potencial de la clase, pero podría haber sido:
Código PHP:
{
  
TStrings *rutas = new TStringList;

  for(
int i 015i++) rutas->Add("Ruta "+String(i));
  
ListBox1->Items->Assign(rutas);

  
delete rutas;


Cita:
Empezado por aguml Ver Mensaje
cuando quiera guardar una ruta supongo que seria rutas[i] pero ¿Y si quiero por ejemplo leer un caracter de una ruta en concreto? ¿Seria rutas[i][j]?
No, sería:
Código PHP:
  rutas->Strings[i][j]; 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 16-12-2014 a las 23:53:45.
Responder Con Cita
  #2  
Antiguo 17-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
lo de rutas[i][j] me referia en el caso de hacerlo con un AnsiString *rutas. Otra cosa, he estado leyendo que TListString tiene el metodo Delete, Count, y Clear y que para eliminar todos los miembros de la lista habia que hacer "for(int i=Lista->Count-1; i>=0;i--) Lista->Delete(i); delete Lista; Lista = null;" pero tambien he leido que el metodo Clear limpia la lista y libera toda la memoria ocupada por los miembros de la lista. Veo que tu te limitas a eliminar la lista sin eliminar antes sus miembros. ¿Puedes aclararme esos puntos por favor?
Responder Con Cita
  #3  
Antiguo 17-12-2014
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
La clase TListString gestiona la memoria por sí mismo. Por ejemplo, el código de su destructor es más o menos:
Código:
   ~TListString () { this->Clear (); }
Por lo tanto, no es necesario que llames al método Clear antes de destruirlo.
Responder Con Cita
  #4  
Antiguo 17-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
ok, lo de recorrer la lista y borrar uno a uno los miembros con el metodo delete lo vi en un ejemplo donde usaba AddObject para añadir objetos a la stringlist y supongo que será por eso y que al no tener objetos no hace falta. Supongo que para el TList que tambien tengo que usar para algunos objetos si tendre que usar su metodo delete y eliminar todos los objetos antes de destruir laTList ¿No?
Responder Con Cita
  #5  
Antiguo 17-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
por cierto, ¿Que diferencia hay entre crear TStrings *lista = new TStringList; o crear TStringList *lista = new *TStringList? ¿Que ventajas y pegas puede haber entre usar uno u otro?
Responder Con Cita
  #6  
Antiguo 17-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

La ventaja de usar una variable de clase abstracta es que dicha variable/parámetro puede recibir cualquier clase derivada de la anterior.

Por ejemplo,
Código PHP:
void foo(TStream *Stream) {...} 
permite enviar cualquier clase derivada de TStream:
Código PHP:
{
  
TMemoryStream *ms;
  
TFileStream *fs;
  
TStringStream *ss;

  
foo(ms);
  
foo(fs);
  
foo(ss);
... 
Logicamente que se dispondrá como máximo, de los miembros y funciones miembros, declarados en la clase base.

En ejemplo anterior concretamente, no reporta beneficio ni perjuicio alguno. Pero, en el caso de haber necesitado del uso de la función miembro Sort(), hubiera usado:
Código PHP:
  TStrignList *sl
ya que al estar implementada en esta última, del otro modo no la habría tenido a mi disposición.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 17-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.
Cita:
Empezado por aguml Ver Mensaje
... Supongo que para el TList que tambien tengo que usar para algunos objetos si tendre que usar su metodo delete y eliminar todos los objetos antes de destruir laTList ¿No?
Si, así es. En el caso de TList es tu responsabilidad liberar la memoria ocupada.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 17-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

Me olvidé de ponerte un ejemplo con TList:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
TList *= new TList;

  
GetTabOrderList(l);
  for (
int i 0l->Counti++)
    
ListBox1->Items->Add((static_cast<TControl*>(l->List[i]))->Name);

  
ShowMessage("¿ Aún ve los controles ?");

  for (
int i 0l->Counti++)
    
delete (static_cast<TControl*>(l->List[i]));
  
delete l;

  
ShowMessage("Ya no mas");

Pero recuerda que también dispones de la clase TObjectList que al igual que que la que te mencionó Ñuño te libera de la responsabilidad de liberar los objetos almacenados.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-12-2014 a las 18:25:50.
Responder Con Cita
  #9  
Antiguo 17-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Entonces en mi caso mejor TObjectList. Tendré que ver como funciona esa.
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
Duda con inicialización de variables lucasarts_18 Varios 13 04-11-2010 17:12:56
Duda sobre destrucción de objetos compuestos por otros objetos noob OOP 11 16-02-2009 00:28:33
Recorrido por objetos en forma de array. vpepen Varios 7 23-01-2009 13:11:12
Array de objetos propios? gandalf_uy OOP 6 26-02-2008 04:19:48
Array de OBJETOS en Delphi 7 animal OOP 5 08-07-2005 11:33:21


La franja horaria es GMT +2. Ahora son las 14:05:29.


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