SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: TListView en Lunes 24 de Agosto de 2009, 12:07

Título: Problema con TListView
Publicado por: TListView en Lunes 24 de Agosto de 2009, 12:07
Hola!
Tenemos un fichero de texto. Hemos volcado los datos a una lista y queremos visualizar en el tlistview los objetos que tenemos dentro de la lista, pero no nos sale.
Título: Re: Problema con TListView
Publicado por: lair en Lunes 24 de Agosto de 2009, 17:23
coloca tu codigo para poder ayudarte mejor :beer:
Título: Re: Problema con TListView
Publicado por: TListView en Miércoles 26 de Agosto de 2009, 13:20
//leer y escribir ficheros
void Cancion::LeerCancionDesdeFichero(ifstream &fichero) //(ficheros de texto)
{
 char buffer[200];
 fichero.getline(buffer,sizeof(buffer));
 codigo=atoi(buffer);
 fichero.getline(buffer,sizeof(buffer));
 titulo=string(buffer);
 fichero.getline(buffer,sizeof(buffer));
 interprete=string(buffer);
 fichero.getline(buffer,sizeof(buffer));
 album=string(buffer);
 fichero.getline(buffer,sizeof(buffer));
 anyo=atoi(buffer);
 fichero.getline(buffer,sizeof(buffer));
 genero=string(buffer);
 fichero.getline(buffer,sizeof(buffer));
 duracion=float(atoi(buffer)); //esta bien el casting??
}

void Cancion::EscribirCancionEnFichero(ofstream &fichero) //(ficheros de texto)
{
 fichero<<codigo<<endl;
 fichero<<titulo<<endl;
 fichero<<interprete<<endl;
 fichero<<album<<endl;
 fichero<<anyo<<endl;
 fichero<<genero<<endl;
 fichero<<duracion<<endl;
}





  int Contenedor::EscribirListaEnFichero()
  {
   ofstream fichero;
   fichero.open("Datos.dat");
   if (!fichero)
    return 1;
   list<Cancion>::iterator it;
   for (it=lista.begin();it!=lista.end();it++)
     (*it).EscribirCancionEnFichero(fichero);
   fichero.close();
   return 0;
  }

  int Contenedor::LeerDelFichero()
  {
  ifstream fichero;
  fichero.open("Datos.dat");
  if(!fichero)
   return 1; //devuelve 1 si ha habido problemas al abrir el fichero.
  Cancion c;
  c.LeerCancionDesdeFichero(fichero);
  while (!fichero.eof())
  {
   lista.push_back(c);
   c.LeerCancionDesdeFichero(fichero);
   }
  fichero.close();
  return 0;
  }


//---------------------------------------------------------------------------
__fastcall TFListado::TFListado(TComponent* Owner)
        : TForm(Owner)
{
 Contenedor contenedor;
 contenedor.LeerDelFichero();
  if (!(contenedor.GetTamanyo() == 0))
  {
   contenedor.OrdenarPorCodigo();
   RecargarLista();
  }
}
//---------------------------------------------------------------------------


//kreo k ai k acer FormClose para hacer q pregunte si
//queremos k guarde los datos al darle a la x

void TFListado::RecargarLista()
{
 Cancion c;
 Contenedor contenedor;
 char* cadena;
 for (int i=0;i<contenedor.GetTamanyo();i++)
  {
   c=contenedor.BuscarCancionPorPosicion(i);
   LVlistado->Items->Add()->Caption=c.GetCodigo();
   cadena=strdup(c.GetTitulo().c_str());
   LVlistado->Items->Add()->SubItems->Add(cadena);
   cadena=strdup(c.GetInterprete().c_str());
   LVlistado->Items->Add()->SubItems->Add(cadena);
   cadena=strdup(c.GetAlbum().c_str());
   LVlistado->Items->Add()->SubItems->Add(cadena);
   cadena=strdup(c.GetGenero().c_str());
   LVlistado->Items->Add()->SubItems->Add(cadena);
   if (c.GetDuracion() == 0)
    LVlistado->Items->Add()->SubItems->Add ("");
   else
    LVlistado->Items->Add()->SubItems->Add (c.GetDuracion());
   if (c.GetAnyo() == 0)
    LVlistado->Items->Add()->SubItems->Add ("");
   else
    LVlistado->Items->Add()->SubItems->Add (c.GetAnyo());
   }
}

No se si hace falta algo más.