Ayuda!Cargar fichero en ListView

zidana
29 de Agosto del 2009
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.
Aqui os dejo el codigo y gracias de antemano:

//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.